搭建Registry Dockerhub本地搭建,即服务器Docker Registry本地搭建,服务器Registry搭建完成后,客户端可以进行PULL/PUSH镜像。
1 2 3 4 5 6 7 8 9 10 11 12 # 服务器动作 # 安装docker sudo apt update sudo apt install -y docker.io sudo systemctl start docker sudo systemctl enable docker # PULL Registry镜像 docker pull registry:2 # 启动Registry 绑定端口 指定数据卷(镜像存储 用于持久化) docker run -d -p 5000:5000 -v /home/ubuntu/myregistry:/var/lib/registry --restart always --name registry registry:2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 # 客户端动作 sudo vim /etc/docker/daemon.json # 添加信任站点 "insecure-registries":["<本地仓库服务器IP/服务器搭建的IP>:5000"] # 添加后长这样(registry-mirrors是原本的配置) { "insecure-registries":["XXXX.XXXX.XXXX.XXXX:5000"], "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com", "https://mirror.ccs.tencentyun.com" ] } # 重启客户端Docker服务 sudo systemctl reload docker.service sudo systemctl restart docker.service # 获取一个官方仓库的小镜像用于测试 docker pull hello-world:latest # 本地可以尝试试用一下hw # docker run hello-world # 显示:Hello from Docker!... # 给容器打一个Tag标记,其可通过IP:PORT标定仓库地址 docker tag hello-world:latest XXXX.XXXX.XXXX.XXXX:5000/hello-world # 推送到自搭建Registry上 docker push XXXX.XXXX.XXXX.XXXX:5000/hello-world
Registry Web粗略查看 1 2 3 4 5 6 # 查看Registry管理了那些镜像 http://XXX.XXX.XXX.XXX:5000/v2/_catalog # 如:http://172.16.249.151:5000/v2/_catalog # 查看特定镜像的tags信息 http://172.16.249.151:5000/v2/hello-world/tags/list
Registry Web友好展示 有没有更加直观的仓库查看管理方式?
1 2 3 4 5 # 服务器部署浏览器容器管理面板 docker pull konradkleine/docker-registry-frontend:v2 docker run -d -e ENV_DOCKER_REGISTRY_HOST=172.16.249.151 -e ENV_DOCKER_REGISTRY_PORT=5000 -p 5002:80 konradkleine/docker-registry-frontend:v2 # 浏览器访问:http://172.16.249.151:5002
企业级Registry管理(Harbor) 另外Harbor是企业级Docker Registry,它【内置】了Registry:2 并且通过调整部分yml配置参数就能快速的安装与启动一组Registry相关套件。
1 2 3 4 cd /home/ubuntu wget https://github.com/goharbor/harbor/releases/download/v2.8.3/harbor-offline-installer-v2.8.3.tgz tar xvf harbor-offline-installer-v2.8.3.tgz cd harbor
复制并简单配置harbor.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 hostname: 172.16 .249 .151 http: port: 5003 :wq bash ./install.sh
此时访问 Harbor ,输入admin / Harbor12345
可以看见Harbor集成了很多功能,如果需要可以通过阅读yml配置文件和Document进行配置,因为内置db+redis,harbor其实就是一个管理级系统。
PULL/PUSH
注意,Harbor与手动Docker Run的Registry不同,它有一个项目(project)的概念,所以,我们在给镜像打Tag的时候,注意格式 host:ip/project_name/image_name:tag_name
1 2 3 4 5 6 7 8 docker tag hello-world:latest 172.16.249.151:5003/library/hello-world:latest docker push 172.16.249.151:5003/library/hello-world:latest # awk 使用的是单引号 print 在{}内 想要用 管道参数 后面使用xargs # docker images | grep 172.16.249.151:500 | awk '{print $1":"$2}' | xargs docker rmi -f docker rmi 172.16.249.151:5003/library/hello-world:latest docker images docker pull 172.16.249.151:5003/library/hello-world:latest