私有仓库迁移harbar案例
项目背景:由于docker私有仓库registry,界面不直观,不易管理,不支持多用户 ,权限管理
harbor 在这些功能都有很好的体现,经过讨论决定将registry升级到harbor
项目实施步骤:
1.选择一台新服务器搭建harbor
第一步:安装docker和docker-compose
yum install -y python2-pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose
第二步:下载harbor-offline-installer-v1.3.0.tgz
第三步:上传到/opt,并解压
cd harbor/
第四步: vim harbor.cfg
hostname = 10.0.0.11
harbor_admin_password = 123456
第5步: ./install.sh
http://10.0.0.12 浏览器访问
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["10.0.0.11:5000","10.0.0.12"],
"hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"]
}
systemctl restart docker
docker login 10.0.0.12
Username: admin
Password: 123456
docker tag nginx:latest 10.0.0.12/oldboy/nginx:latest
docker push 10.0.0.12/oldboy/nginx:latest
2.为harbor配置了https
mkdir -p /data/cert 创建目录
vim harbor.cfg
unzip blog.qstack.com.cn.zip 解压https证书
cd Nginx/
mv 1_blog.qstack.com.cn_bundle.crt /data/cert/server.crt
mv 2_blog.qstack.com.cn.key /data/cert/server.key
cd /opt/harbor/
vim harbor.cfg
systemctl restart docker
vim install.sh
./install.sh
3.镜像迁移
第一步:开启私有仓库
docker run -d -p 5000:5000 -v /opt/registry-var/auth/:/auth/ -v /opt/myregistry:/var/lib/registry -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry
第二步:创建脚本目录
mkdir /server/scripts -p
cd /server/scripts/
第三步:编写脚本
vim migrate_images.sh
#!/bin/sh
image_names=`curl -u oldboy:123456 http://10.0.0.11:5000/v2/_catalog 2>/dev/null|jq .repositories[]|tr -d '"'`
for i in $image_names
do
tags=`curl -u oldboy:123456 http://10.0.0.11:5000/v2/$i/tags/list 2>/dev/null|jq ".tags[]"|tr -d '"'`
for j in $tags
do
docker pull 10.0.0.11:5000/$i:$j
docker tag 10.0.0.11:5000/$i:$j blog.qstack.com.cn/oldboy/$i:$j
docker push blog.qstack.com.cn/oldboy/$i:$j
done
done
第四步:
docker login 10.0.0.11:5000 登陆私有仓库
docker login blog.qstack.com.cn 登陆harbar
sh -x migrate_images.sh
进行测试查看