内网自建Docker Registry
2018-01-17 17:45
513 查看
项目现有CI、CD方案为
提交代码到内网gitlab
自动触发gitlab Runner
gitlab Runner 按照.gitlab-ci.yml配置进行编译打包
gitlab Runner 按照.gitlab-ci.yml配置进行镜像构建
gitlab Runner 按照.gitlab-ci.yml配置将镜像推送到阿里云镜像服务
去内网Portainer管理界面进行手动update
现在的问题是在第5步执行时由于多个镜像通过外网上传到阿里云的镜像服务中去比较慢(受限于上行网速,完成镜像push需要8分钟左右)。
由此想到了在内外自建Docker Registry服务,无论是push还是pull镜像时间至少可以节省一半以上。
这里我们使用的是centos7.3,centos7由于其没有默认开启xfs的d_type特性,docker可能会出现莫名奇妙的问题。安装方法可参考Docker CE 镜像源站-博客-云栖社区-阿里云
https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.70650369sIkk2L
安装并启动docker完成后
执行如下命令
registry:2.6.2中的 2.6.2为显示指定版本,避免直接使用registry导致后期registry镜像升级导致的差异异常
看看本地有哪些镜像
给portainer/portainer镜像打tag
将镜像传到我们内网的registry
哦豁,装逼失败。这里我们需要将机器配置一下,最主要的是insecure-registries,其中registry-mirrors为阿里云的加速地址,与本次错误无关。
我们再次尝试装逼
成功!
那如何看到我们push的信息呢?
我们也可以pull一下来看看
更多请参考
Docker —— 从入门到实践 · GitBook
https://www.gitbook.com/book/yeasy/docker_practice/details
提交代码到内网gitlab
自动触发gitlab Runner
gitlab Runner 按照.gitlab-ci.yml配置进行编译打包
gitlab Runner 按照.gitlab-ci.yml配置进行镜像构建
gitlab Runner 按照.gitlab-ci.yml配置将镜像推送到阿里云镜像服务
去内网Portainer管理界面进行手动update
现在的问题是在第5步执行时由于多个镜像通过外网上传到阿里云的镜像服务中去比较慢(受限于上行网速,完成镜像push需要8分钟左右)。
由此想到了在内外自建Docker Registry服务,无论是push还是pull镜像时间至少可以节省一半以上。
这里我们使用的是centos7.3,centos7由于其没有默认开启xfs的d_type特性,docker可能会出现莫名奇妙的问题。安装方法可参考Docker CE 镜像源站-博客-云栖社区-阿里云
https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.70650369sIkk2L
安装并启动docker完成后
执行如下命令
docker run -d -p 5000:5000 --restart=always -v /opt/data/registry:/var/lib/registry --name registry registry:2.6.2
registry:2.6.2中的 2.6.2为显示指定版本,避免直接使用registry导致后期registry镜像升级导致的差异异常
那如何将镜像push到registry呢
我们可以测试将本地进行打个tag,然后push上去看看本地有哪些镜像
[root@xxx-dev ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE portainer/portainer latest f71b185552bf 5 weeks ago 33.2MB
给portainer/portainer镜像打tag
[root@xxx-dev ~]# docker tag portainer/portainer 192.168.1.28:5000/portainer/portainer:latest
将镜像传到我们内网的registry
[root@xxx-dev ~]# docker push 192.168.1.28:5000/portainer/portainer:latest The push refers to a repository [192.168.1.28:5000/portainer/portainer] Get https://192.168.1.28:5000/v2/: http: server gave HTTP response to HTTPS clie
哦豁,装逼失败。这里我们需要将机器配置一下,最主要的是insecure-registries,其中registry-mirrors为阿里云的加速地址,与本次错误无关。
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "insecure-registries": ["192.168.1.28:5000"], "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
我们再次尝试装逼
[root@xxx-dev ~]# docker push 192.168.1.28:5000/portainer/portainer:latest The push refers to a repository [192.168.1.28:5000/portainer/portainer] ac4c534d43cb: Pushed dd4969f97241: Pushed latest: digest: sha256:73628b5ded99bb2bf7f3f5e599f7b46044ba5025bea98c32c713afc0d7c972b5 size: 739
成功!
那如何看到我们push的信息呢?
[root@gpf-dev ~]# curl 192.168.1.28:5000/v2/_catalog {"repositories":["portainer/portainer"]}
我们也可以pull一下来看看
[root@gpf-dev ~]# docker pull 192.168.1.28:5000/portainer/portainer:latest latest: Pulling from portainer/portainer Digest: sha256:73628b5ded99bb2bf7f3f5e599f7b46044ba5025bea98c32c713afc0d7c972b5 Status: Downloaded newer image for 192.168.1.28:5000/portainer/portainer:latest
更多请参考
Docker —— 从入门到实践 · GitBook
https://www.gitbook.com/book/yeasy/docker_practice/details
相关文章推荐
- 在内网搭建docker registry并使用密码鉴权的方法
- 自建Docker Registry
- 搭建docker内网私服(docker-registry with nginx&ssl on centos)
- Docker教程:docker远程repository和自建本地registry
- win7 docker 推送至内网私有仓库 Registry
- 部署内网Docker Registry
- Docker教程:docker远程repository和自建本地registry
- 搭建docker内网私服的方法(docker-registry with nginx&ssl on centos)
- 搭建docker内网私服(docker-registry with nginx&ssl on centos)
- Docker搭建内网Registry
- 搭建docker内网私服(docker-registry with nginx&amp;ssl on centos)
- Docker教程:docker远程repository和自建本地registry
- 内网部署支持ssl的docker registry
- docker 自建Registry時 無法push
- docker 自建证书 私有 registry 搭建
- 搭建docker内网私服(docker-registry with nginx&ssl on centos)
- docker registry v2 ssl 环境搭建
- 企业自用docker registry v2 镜像仓库
- docker registry 搭建步骤
- 教你分分钟搞定Docker私有仓库Registry