docker-创建私有registry

咱们知道可使用hub.docker.com做为咱们公共或者私有的registry。但因为服务器在国外的缘由,网速会很是的慢。
因此咱们在利用docker开发构建容器服务时,咱们但愿可以创建本身的私有registry,上传镜像值咱们的私有registry中心,而后在其余物理机上部署的时候,能够快速的pull,而后实现大规模的分发以及部署,提升效率。
下面将会说一下如何经过registry容器实现这个nginx

 

环境:centos7.0,  docker1.13.1版本docker

docker1.12版本之后,docker的可执行文件从/usr/bin/docker变成了/ussr/bin/dockerd,每个版本在不一样的环境下,dockerd的daemon都是不一样的配置,具体的要根据docker官网的指导进行配置。咱们在网上能够看到不少关于如何配置docker的daemon启动参数教程,以及一些出现的问题,其实大部分都是讲的比较乱的,或者不根据本身的实际系统和docker版本去肯定如何配置的,由于不一样的系统版本和docker版本具体的opts的选项是不一样的,这个配置的文件的位置也是不同的,若是没清楚整个区别,就跟着网上的改来改去,最后配置仍是没能生效。json


(1)无认证的registry
在环境中,dockerd的配置文件在/etc/docker/daemon.json中,若是没有该文件,能够手动建立。

第一步:pull docker官方的registry的第二个版本,docker1.6版本以上支持registry2
docker pull registry:2.6.0vim

或者docker pull registry 不指定版本,表示latest版本centos

 

第二步:配置daemon.json,去掉docker默认的https的访问
vim /etc/docker/daemon.json
里面的内容是一个json对象,加上一项insecure-registries,地址本身更改:
{
"insecure-registries":["192.168.1.78:5000"]
}

而后重启docker,执行
systemctl daemon-reload docker
systemctl restart docker

第三步:无认证启动registry容器
docker run -d --name registry -p 5000:5000 --restart=always -v /opt/registry/:/var/lib/registry/ registry:2.6.0
上传到私有镜像的镜像到时是默认存放在容器的/var/lib/registry/,为了防止删除registry,上传的镜像也被删除,因此启用一个volume,将上传的镜像持久化保存在咱们物理机上,这里保存位置是/opt/registry/

第四步:测试是否启动容器
curl http://192.168.1.78:5000/v2/_catalog服务器

若是返回{"repositories":[]},表明启动成功了!curl

 

第五步:测试上传到咱们本身的私有registry
将nginx这个镜像重命名tag
docker tag nginx 192.168.1.78:5000/mynginx
这里须要注意的是重命名的tag必须带有创建192.168.1.78:5000/这个前缀,后面的mynginx是新镜像名。
而后开始进行push到咱们创建的私有registry
docker push 192.168.1.78:5000/mynginx
再经过运行
curl http://192.168.1.78:5000/v2/_catalog
能够看到返回{"repositories":["mynginx"]}
说明已经push到了本身的registry


第六步:测试pull
一样仍是在本机上进行pull
首先删除本机存在的镜像192.168.1.78:5000/mynginx(刚才经过tag重命名的)
docker rmi 192.168.1.78:5000/mynginx
而后
docker images
能够看到已经没有了192.168.1.78:5000/mynginx这个镜像
下面开始pull这个镜像
docker pull 192.168.1.78:5000/mynginx
而后再看
docker images
能够看到出现这个192.168.1.78:5000/mynginx
说明pull成功了

第七步:在其余的物理机上pull这个镜像
一样须要在安装docker,而后再/etc/docker/daemon.json这个文件中
添加insecure-registries,ip地址本身更改:
{
"insecure-registries":["192.168.1.78:5000"]
}
而后重启docker,执行
ststemctl daemon-reload docker
systemctl restart docker
docker pull 192.168.1.78:5000/mynginx 
这样子就能够从本身的registry拉取镜像了,固然也能够上传镜像
假若有一个mynginx:1.1
docker tag 192.168.1.78:5000/mynginx 192.168.1.78:5000/mynginx:1.1
docker push 192.168.1.78:5000/mynginx:1.1
其实192.168.1.78:5000/这个就是创建的私有registry的地址

无认证的registry已经完成了,特别在局域网内部开发或者线上部署时很是有用!

下一节将会总结一下关于认证模式的registry,欢迎留意!测试

相关文章
相关标签/搜索