Centos 7上Docker私有仓库Registry实战

1. 关于Registry

官方的Docker hub是一个用于管理公共镜像的好地方,咱们能够在上面找到咱们想要的镜像,也能够把咱们本身的镜像推送上去。可是,有时候,咱们的使用场景须要咱们拥有一个私有的镜像仓库用于管理咱们本身的镜像。这个能够经过开源软件Registry来达成目的。python

 Registrygithub上有两份代码:老代码库和新代码库。老代码是采用python编写的,存在pullpush的性能问题,出到0.9.1版本以后就标志为deprecated,再也不继续开发。从2.0版本开始就到在新代码库进行开发,新代码库是采用go语言编写,修改了镜像id的生成算法、registry上镜像的保存结构,大大优化了pullpush镜像的效率。git

 官方在Docker hub上提供了registry的镜像(详情),咱们能够直接使用该registry镜像来构建一个容器,搭建咱们本身的私有仓库服务。github

 2. Registry的部署

   1. 运行下面命令获取registry镜像算法

      docker pull registrydocker

     下载到的版本默认为 docker.io/registry            latest  json

 

  2. 将registry镜像运行并生成一个容器
     run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
     Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,将主机的/opt/registry目录挂载到该目录,便可实现将镜像保存到主机的/opt/registry目录了。浏览器

 

  3. 运行docker ps看一下容器运行状况安全

 

 4.registry容器启动后,打开浏览器输入http://ip_add:5000/v2/,看到下面状况说明registry运行正常curl

 

3. 测试上传镜像到Registry

   经过将镜像push到registry来验证,首先将主机的registry镜像命名为符合仓库要求registry_url:port/dir/name:version的格式,经过docker tag命令来实现命名

   docker tag registry:latset ip_add:5000/registry:latset:latset
性能

   经过命令 docker images 查看本地镜像

   上传Registry镜像到Registry仓库: docker push ip_add:5000/registry:latset:latset

      注意:

     可能会出现没法push镜像到私有仓库的问题。这是由于咱们启动的registry服务不是安全可信赖的。这时须要修改docker的配置文件/etc/docker/daemon.json,添加下面的内容

  {"registry-mirrors": ["http://86d2a50b.m.daocloud.io"],"insecure-registries": ["xxx.xxx.xxx.xxx:5000"]}

   "registry-mirrors": ["http://86d2a50b.m.daocloud.io"] 是国内daocloud公司代理的Registry Hub仓库的地址,能够加快国内访问Registry Hub仓库的速度。修改好以后须要重启Docker服务才能生效,执行命令:systemctl restart docker ,在push便可。

  push成功以后,查看本地/opt/registry目录下已经有了刚推送上来的registry镜像,也能够在浏览器中输入http://ip_add:5000/v2/_catalog

 

 

   或者使用如下命令查看:

   # curl -XGET http://registry:5000/v2/_catalog

 # curl -XGET http://registry:5000/v2/image_name/tags/list

  至此,咱们的Registry私有仓库搭建完成,若是在从此中要使用,能够使用命令:docker pull ip_add:5000/registry:latset 拉取。

相关文章
相关标签/搜索