设为首页 收藏本站
查看: 1697|回复: 0

[经验分享] 在 ubuntu 搭建 docker registry 私有仓库

[复制链接]

尚未签到

发表于 2019-2-19 09:50:31 | 显示全部楼层 |阅读模式
为什么要搭建 docker 私有仓库
  原因有几个:


  • 项目需要,不希望将项目放到 docker hub 上。
  • 环境需求,考虑网络、效率的问题,希望在私有服务器上建立自用的仓库,提高便利性和访问速度。
  • 可以做更多的个性化配置。

用什么搭建 docker 私有仓库
  docker 官方提供了 registry 的镜像,可以使用它来建私有仓库。

本次搭建的环境
  在这里先说明一下本文的实验环境:


  • docker 仓库服务器: ubuntu 14.04     ip地址:192.168.188.112
  • docker 客户端机器:        CentOS 7          ip地址: 192.168.188.107

搭建过程

目标
  在ubuntu 14 的服务器上,安装最新版本的 docker-ce,在 docker hub 获取 registry 镜像,并启动仓库容器。在 docker 客户端机器,可以从服务器的仓库获取镜像文件。

服务器安装最新版本的 docker-ce

curl  -sSL   https://get.docker.com/   |   sh

  说明: 安装过程视网络情况而定,可能需要话费一段时间,需要耐心等待

安装加速器
  由于在国内,访问国外的网站速度可能会较慢,所以,最好为ubuntu 添加加速器。
  对于 ubuntu 14 的系统环境来说,修改文件 /etc/default/docker :

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
从 docker hub 获取官方 registry 镜像,并启动 registry 容器

1.   获取 registry 镜像:
docker   pull   registry   # 默认就是最新的 latest 版本
2.  用registry 镜像启动一个仓库容器:
docker run -d   --name=my-docker-registry-2  --restart=always -p 5000:5000   -v  /opt/data/registry:/tmp/registry    registry
说明:启动一个名字为 my-docker-registry-2 的容器,端口映射到宿主机的5000,挂载宿主机目录 /opt/data/registry 到容器的 /tmp/registry ,用于存储 push 进去的镜像文件。   
在宿主机本地测试仓库
  1.从 docker  hub 获取一个ubuntu 16.04 的镜像

docker  pull   ubuntu:16.04  

  2.将上面获取的镜像重新打 tag :

docker  tag    ubuntu:16.04    192.168.188.112:5000/my-ubuntu
  3.将新打标签的镜像push 到本地仓库,docker 命令会从“. 和 :  ”的格式识别是本地路径的仓库:

docker   push   192.168.188.112:5000/my-ubuntu
  说明:
这一步,可能会报错,错误信息如下 :
hell@ubuntu:/opt/docker/registry/conf$ sudo docker push 192.168.188.112:5000/my-ubuntu
The push refers to repository [192.168.188.112:5000/my-ubuntu]
Get https://192.168.188.112:5000/v2/: http: server gave HTTP response to HTTPS client
解决办法:
ubuntu 修改默认文件
sudo  vim    /etc/default/docker
  修改:
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registry=192.168.188.112:5000"
  4.删除从docker hub 下载的镜像:

docker  rmi    ubuntu:16.04    192.168.188.112:5000/my-ubuntu
说明:   删除了本地的两个镜像文件
docker    images   
说明:查看本地的镜像文件,确认上一步已经删除成功。
  5.查看仓库中是否已经上传镜像成功:

hell@hell:~$   curl localhost:5000/v2/_catalog
{"repositories":["my-ubuntu"]}
说明:  这样,已经就是查询到push 镜像成功了。
  6.从本地仓库拉取镜像:

docker   pull  192.168.188.112:5000/my-ubuntu
说明: docker 命令通过“ .   : ”识别是本地仓库
  7.结果:

hell@hell:~$ docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1:5000/my-ubuntu       latest              9adf4ebd74b9        3 weeks ago         285MB
192.168.188.112:5000/my-ubuntu   latest              9adf4ebd74b9        3 weeks ago         285MB
registry        
说明: 可以看到用 127.0.0.1或者192.168.188.112两个地址都能获取成功
从其他机器获取镜像
  我们搭建了私有仓库,如果只能在一台宿主机上使用,意义就不大了。但是,官方的 registry 私有仓库是不支持其他客户端直接访问仓库服务器的。需要多做一些配置修改。

使用修改 --insecure-registry 参数的方法
  修改 --insecure-registry 参数的方法,是最简单的。如果需要安全性更高的,就需要配置 SSL 访问了,这中方式留待以后继续研究。

仓库服务器修改

ubuntu 默认文件是
sudo  vim    /etc/default/docker
修改:
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registry=192.168.188.112:5000"

修改配置后,需重启docker 进程
  为了做到重启docker 后台进程时,不会引起所有容器都被强制关闭,需要修改一些配置文件,具体请参考这篇博文:《如何保证 docker 后台进程重启,而不引起容器关闭》。

centos 客户端配置
  客户机这里使用的系统是 CentOS 7,在 CentOS 7上安装docker-ce 版本,请参考这篇博文:《centos7安装docker-ce新版》。
  1.按上面的方法安装好docker-ce 版本后,修改配置文件:

vim    /lib/systemd/system/docker.service
添加: ExecStart=/usr/bin/dockerd  --insecure-registry 192.168.188.112:5000

  CentOS 的docker 后台进程重启,默认是不会导致容器强制关闭的,所以,修改配置文件后,可以放心重启后台进程:

systemctl   restart   docker
  2.验证

[root@centos_7 ~]# curl -L http://192.168.188.112:5000/v2/_catalog
{"repositories":["my-ubuntu-sshd"]}

  3.从私有仓库下载镜像

docker   pull    192.168.188.112:5000/my-ubuntu

  4.成功下载镜像文件

[root@centos_7 ~]# docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
ubuntu                                14.04               dc4491992653        2 weeks ago         222MB
192.168.188.112:5000/my-ubuntu        latest              9adf4ebd74b9        3 weeks ago         285MB

总结
  docker 官方的 registry 仓库,默认是不支持从其他客户端拉取服务器仓库的镜像文件的,不过简单的办法,就是打开 --insecure-registry 这个选项。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-674227-1-1.html 上篇帖子: ubuntu 16.04 LTS upgrade后报错snapd 下篇帖子: windows 使用vnc图形化界面远程连接阿里云ubuntu 16.04云服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表