隔壁老王一看 发表于 2023-3-2 16:41:47

搭建自己的harbor仓库并上传和下载镜像


1.1 搭建harbor服务器

$ cat /data/scripts/install_harbor.sh
#!/bin/bash

DOCKER_VERSION="20.10.10"
UBUNTU_DOCKER_VERSION="5:${DOCKER_VERSION}~3-0~${ID}-${UBUNTU_CODENAME}"
DOCKER_COMPOSE_VERSION="2.16.0"
DOCKER_COMPOSE_FILE=docker-compose-Linux-x86_64
HARBOR_VERSION="2.5.6"
HARBOR_BASE="/usr/local/"
HARBOR_NAME=harbor.yanlinux.org
HARBOR_IP=`hostname -I|awk '{print $1}'`
HARBOR_ADMIN_PASSWORD=123456

COLOR_SUCCESS="echo -e \\033[1;32m"
COLOR_FAILURE="echo -e \\033[1;31m"
END="\033[m"

. /etc/os-release

color () {
    RES_COL=60
    MOVE_TO_COL="echo -en \\033[${RES_COL}G"
    SETCOLOR_SUCCESS="echo -en \\033[1;32m"
    SETCOLOR_FAILURE="echo -en \\033[1;31m"
    SETCOLOR_WARNING="echo -en \\033[1;33m"
    SETCOLOR_NORMAL="echo -en \E[0m"
    echo -n "$1" && $MOVE_TO_COL
    echo -n "["
    if [ $2 = "success" -o $2 = "0" ] ;then
      ${SETCOLOR_SUCCESS}
      echo -n $"OK"
    elif [ $2 = "failure" -o $2 = "1"] ;then
      ${SETCOLOR_FAILURE}
      echo -n $"FAILED"
    else
      ${SETCOLOR_WARNING}
      echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo
}

install_docker() {
    if [ $ID = "centos" -o $ID = "rocky" ];then
      if [ $VERSION_ID = "7" ];then
            cat >/etc/yum.repos.d/docker.repo<<EOF

name=docker
gpgcheck=0
#baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/
EOF
      else   
            cat >/etc/yum.repos.d/docker.repo<<EOF

name=docker
gpgcheck=0
#baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/8/x86_64/stable/
EOF
      fi
      yum clean all
      yum makecache
      ${COLOR_FAILURE} "Docker有以下版本"${END}
      yum list docker-ce --showduplicates
      ${COLOR_FAILURE}"5秒后即将安装: docker-"${DOCKER_VERSION}" 版本....."${END}
      sleep 5
      yum -y install docker-ce-${DOCKER_VERSION} docker-ce-cli-${DOCKER_VERSION} || { color "Base,Extras的yum源失败,请检查yum源配置" 1;exit; }
    else
          dpkg -s docker-ce &> /dev/null && $COLOR"Docker已安装,退出" 1 && exit
      apt update || { color "更新包索引失败" 1 ; exit 1; }
      apt-y install apt-transport-https ca-certificates curl software-properties-common || \
            { color "安装相关包失败" 1 ; exit 2;}
      curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
      add-apt-repository "deb https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
      apt update
      ${COLOR_FAILURE} "Docker有以下版本"${END}
      apt-cache madison docker-ce
      ${COLOR_FAILURE}"5秒后即将安装: docker-"${UBUNTU_DOCKER_VERSION}" 版本....."${END}
      ${COLOR_FAILURE}"如果想安装其它Docker版本,请按ctrl+c键退出,修改版本再执行"${END}
      sleep 5
      apt -yinstall docker-ce=${UBUNTU_DOCKER_VERSION} docker-ce-cli=${UBUNTU_DOCKER_VERSION}
    fi

    if [ $? -eq 0 ];then
      color "安装软件包成功"0
    else
      color "安装软件包失败,请检查网络配置" 1
      exit
    fi
    mkdir -p /etc/docker
    tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://5lwrg1ye.mirror.aliyuncs.com"],
"insecure-registries":["harbor.yanlinux.org"]
}
EOF
        systemctl daemon-reload
    systemctl enable docker
    systemctl restart docker
    docker version && color "Docker 安装成功" 0 ||color "Docker 安装失败" 1

    echo 'alias rmi="docker images -qa|xargs docker rmi -f"' >> ~/.bashrc
        echo 'alias rmc="docker ps -qa|xargs docker rm -f"' >> ~/.bashrc
    echo 'alias dps="docker ps -a"' >> ~/.bashrc
    echo 'alias dim="docker images"' >> ~/.bashrc
}

install_docker_compose() {
    ${COLOR_SUCCESS}"开始安装 Docker compose....."${END}
    sleep 5
    if [ ! -e ${DOCKER_COMPOSE_FILE} ];then
      curl -L https://get.daocloud.io/docker/compose/releases/download/v${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m) -o /usr/bin/docker-compose
    else
      mv ${DOCKER_COMPOSE_FILE} /usr/bin/docker-compose
    fi
    chmod +x /usr/bin/docker-compose

    if docker-compose --version ;then
      ${COLOR_SUCCESS}"Docker Compose 安装完成"${END}
    else
      ${COLOR_FAILURE}"Docker compose 安装失败"${END}
      exit
    fi
}

install_harbor() {
    ${COLOR_SUCCESS}"开始安装 Harbor....."${END}
    sleep 5
    #下载文件
    if [ ! -e harbor-offline-installer-v${HARBOR_VERSION}.tgz ];then
      wget https://github.com/goharbor/harbor/releases/download/v${HARBOR_VERSION}/harbor-offline-installer-v${HARBOR_VERSION}.tgz || ${COLOR_FAILURE} "下载失败!" ${END}
    fi
    #[ -d ${HARBOR_BASE} ] ||mkdir ${HARBOR_BASE}
    tar xvf harbor-offline-installer-v${HARBOR_VERSION}.tgz-C ${HARBOR_BASE}
    cd ${HARBOR_BASE}/harbor

    #编辑配置文件
    cp harbor.yml.tmpl harbor.yml
    sed -ri "/^hostname/s/reg.mydomain.com/${HARBOR_NAME}/" harbor.yml
    sed -ri "/^https/s/(https:)/#\1/" harbor.yml
    sed -ri "s/(port: 443)/#\1/" harbor.yml
    sed -ri "/certificate:/s/(.*)/#\1/" harbor.yml
    sed -ri "/private_key:/s/(.*)/#\1/" harbor.yml
    sed -ri "s/Harbor12345/${HARBOR_ADMIN_PASSWORD}/" harbor.yml
    sed -i 's#^data_volume: /data#data_volume: /data/harbor#' harbor.yml

    ${HARBOR_BASE}/harbor/install.sh && ${COLOR_SUCCESS}"Harbor 安装完成"${END} ||${COLOR_FAILURE}"Harbor 安装失败"${END}

    cat > /lib/systemd/system/harbor.service << EOF

Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor


Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose -f${HARBOR_BASE}/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f ${HARBOR_BASE}/harbor/docker-compose.yml down


WantedBy=multi-user.target
EOF

    systemctl daemon-reload
    systemctl enable --now harbor &> /dev/null || ${COLOR}"Harbor已配置为开机自动启动"${END}

    if [ $?-eq 0 ];then
      echo
      color "Harbor安装完成!" 0
      echo "-------------------------------------------------------------------"
      echo -e "请访问链接: \E[32;1mhttp://${HARBOR_IP}/\E[0m"
                echo -e "用户和密码: \E[32;1madmin/${HARBOR_ADMIN_PASSWORD}\E[0m"
    else
      color "Harbor安装失败!" 1
      exit
    fi
}

docker info &> /dev/null && ${COLOR_FAILURE}"Docker已安装"${END} || install_docker
docker-compose --version &> /dev/null && ${COLOR_FAILURE}"Docker Compose已安装"${END} || install_docker_compose
install_harbor

$ sh /data/scripts/install_harbor.sh1.2 在Harbor服务器(10.0.0.18)上配置https

1.2.1 生成Harbor服务器证书

#生成ca的私钥openssl genrsa -out ca.key 4096#生成ca的自签名证书openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/C=CN/ST=Jiangsu/L=Nanjing/O=example/OU=Personal/CN=yanlinux.org" \-key ca.key \-out ca.crt#生成harbor主机的私钥openssl genrsa -out harbor1.yanlinux.org.key 4096#生成harbor主机的证书申请openssl req -new -sha512 \-subj "/C=CN/ST=Jiangsu/L=Nanjing/O=example/OU=Personal/CN=harbor1.yanlinux.org" \-key harbor1.yanlinux.org.key \-out harbor1.yanlinux.org.csr#创建x509 v3扩展文件(新版新增的要求)cat > v3.txt
页: [1]
查看完整版本: 搭建自己的harbor仓库并上传和下载镜像