docker私有仓库搭建harbor

docker私有仓库搭建harbor

一、安装docker
安装了docker和docker-compose
## 安装基础依赖包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2


## 阿里源

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


命令查看版本号

sudo yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce
sudo yum install docker-ce-19.03.4
#启动
systemctl start docker.service
#开机自启
systemctl enable docker.service

2、安装compose
先到github(https://github.com/docker/compose/releases)查看docker-compose的最新版本号。
然后把下面命令中的1.27.4替换为你找到的最新版本号,然后运行该命令。

curl -L "https://github.com/docker/compose/releases/download/v2.3.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose


查看版本

docker-compose --version


**离线安装docker-**compose
https://github.com/docker/compose/releases/
下载

二、下载Harbor
在harbor下载页(https://github.com/goharbor/harbor/releases)选择需要的版本,下载后解压


选择离线包
三、安装
解压文件

tar -zxvf harbor-offline-installer-v2.4.1.tgz


修改配置文件harbor.yml
修改hostname和port

安装包

./intstall.sh

安装成功

登录
http://10.9.70.145:8072/

用户名:admin
密码:在yml配置文件中设置

开机自启

vim /usr/lib/systemd/system/harbor.service
[Unit]
Description=Harbor
After=docker.service
Requires=docker.service
Documentation=http://github.com/vmware/harbors

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f  /home/InstallPackage/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /home/InstallPackage/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target

配置开机自启动

systemctl enable harbor

启动命令

sudo systemctl start harbor

四、上传镜像
在本机配置harbor仓库http可信
新建文件

vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "insecure-registries":["10.9.70.145:8072"]
}

将harbor加入

重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

新建项目

登录harbor仓库

docker login 10.9.70.145:8072


上传镜像

docker tag openjdk:8 10.9.70.145:8072/dev/openjdk:8
docker push 10.9.70.145:8072/dev/openjdk:8


登陆系统查看

四、批量拉去镜像入库
新建sh执行文件

mageNewTag=`date +%Y%m%d-%H%M%S`
#镜像仓库地址
registryAddr="192.168.8.162:8072/dev/"

#循环读取images.txt,并存入list中
n=0

for line in $(cat images.txt | grep ^[^#])
do
        list[$n]=$line
        ((n+=1))
done

echo "需推送的镜像地址如下:"
for variable in ${list[@]}
do
        echo ${variable}
done

for variable in ${list[@]}
do
        #下载镜像
        echo "准备拉取镜像: $variable"
        docker pull $variable

        # #获取拉取的镜像ID
        imageId=`docker images -q $variable`
        echo "[$variable]拉取完成后的镜像ID: $imageId"

        #获取完整的镜像名
        imageFormatName=`docker images --format "{{.Repository}}:{{.Tag}}:{{.ID}}" |grep $variable`
        echo "imageFormatName:$imageFormatName"

        #删掉最后一个/及其左边的字符串
        #如:192.168.35.126:5000/lyzhxg/bks/ly-sm-yxxt-ui:20200324-153539:0beed7b2fa8c  ->  ly-sm-yxxt-ui:20200324-153539:0beed7b2fa8c
        repository=${imageFormatName##*/}
        echo "repository :$repository"

        #删掉第一个:及其右边的字符串
        #如:ly-sm-yxxt-ui:20200324-153539:0beed7b2fa8c -> ly-sm-yxxt-ui
        repository=${repository%%:*}

        echo "新镜像地址: $registryAddr$repository:$imageNewTag"

        #重新打镜像标签
        docker tag $imageId $registryAddr$repository:$imageNewTag

        # #推送镜像
        docker push $registryAddr$repository:$imageNewTag
done

安装skopeo

yum install skopeo

安装jq

yum install epel-release
yum list jq
yum install jq

新建文件

get-manifests.sh
#!/bin/bash
set -eo pipefail
DOCKER_HUB_URL="https://hub.docker.com/v2/repositories/library"
IMAGES_LIST="images.list"
get_images_list(){
 ALL_IMAGES=""
 URL="${DOCKER_HUB_URL}/?page_size=100"
 while true ; do
 ALL_IMAGES="$(curl -ssl ${URL}| jq -r '.results[].name' | tr '\n' ' ')${ALL_IMAGES}"
 echo ALL_IMAGES
 URL="$(curl -ssl ${URL} | jq -r '.next')"
 if ["${URL}"="nul1"]; then break; fi
 done
 : > ${IMAGES_LIST}
 for image in ${ALL_IMAGES};do
 if skopeo list-tags docker://${image} &> /dev/null; then
 skopeo list-tags docker://${image} | jq -c ".Tags"| tr -d '[]\"' \ | tr ',' '\n' | sed "s|^|${image}:|g" >> ${IMAGES_LIST}
 fi
 done
}

get_manifests(){
 mkdir -p manifests
 IFS=$'\n'
 for image in $(cat ${IMAGES_LIST});do
 if skopeo inspect --raw docker://${image} | jq -r '.manifests[].digest' &> /dev/null ; then
 skopeo inspect --raw docker://${image} | jq -r '.manifests[].digest' \ | xargs -L1 -P8 -I % sh -c "skopeo inspect --raw docker://${image/:*/}@% > manifests/${image}@%.json"
 else
 skopeo inspect --raw docker://${image} > manifests/${image}.json 
 fi
 done
}

get_images_list
get_manifests

文件赋予可执行权限

chmod 777 auto-pull-and-push-images.sh 

或者

chmod u+x auto-pull-and-push-images.sh

【参考】
Docker部署Harbor-v2.4.1_harbor 2.4的部署-CSDN博客
docker hub 镜像列表获取
如何构建私有 Docker Hub 镜像站 - ludongguoa - 博客园

从 0 到 1 构建一个企业级的私有镜像仓库 Harbor · 测试之家

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值