Docker私有仓库搭建

目录:


 1、搭建需证书认证的Docker私有仓库

 2、搭建需证书加用户名密码认证的Docker私有仓库

 3、参考文档


首先介绍一下Docker Registry(仓库),简单的理解,它是一个用于集中存放Docker镜像的地方。Docker Registry包括之前的V1,和现在的V2两个版本,分割线在docker 1.6.0版本,在这之前都是v1,从docker 1.6.0及之后,都只支持Docker Registry v2版本。


v1v2不是简单的版本升级,而是两个独立的项目,v1版本使用python开发,v2版本使用go开发,v2版本在安全性和性能方面都有了很大提升,v2版本支持后端插件化的存储,镜像可以存放在包括s3azureswiftossgcs、本地文件系统和内存中,极大的提供了便利。同时v2版本的Docker仓库,在pullpush的时候都支持断点,和多线程传输,以提高性能。具体的差别还有很多,可以参考官方文档。


那么v2版本Docker仓库有什么不好吗?最大的问题就是和v1不兼容。目前有些API还不够完善,对于环境中既有Docker 1.6之前,又有Docker 1.6之后版本的用户来说,就需要同时准备两个Docker仓库,并且做到两个版本仓库之间镜像的相互转换和同步。


本文的所有操作都是基于Docker Registry V2进行的。


虽然目前Docker官方提供了一个公有的Docker镜像仓库,用户只需要自行注册一个账号即可使用,但是对于企业用户来说,公有仓库是远远无法满足需求的,无论从镜像的安全性,还是从下载镜像的速度,都让使用Docker的企业用户必须搭建自有的Docker私有仓库。


同时,在大规模Docker集群的部署过程中,Docker仓库也会面临诸多的问题和挑战。比如,当业务存在于多个数据中心,那么多数据中心的Docker仓库同步就必须解决;当业务发布规模很大一次1000+的时候,Docker仓库的速度问题就必须解决;这些问题将在以后的文章中详细讨论。本文先来详细的介绍,如何来搭建安全的Docker私有仓库。


1、搭建需证书认证的Docker私有仓库


CentOS系统中,添加Docker官方的源之后,使用yum install docker-engine-y 就完成安装。




1.1创建仓库证书


    Docker安装完成之后,需要为Docker私有仓库创建两个目录。



docker_registry_certs用于存放Docker私有仓库的证书,docker_registry_images用于存放Docker私有仓库中存放的镜像,建议镜像目录空间预留大一些。

通过openssl生成私钥,文件名为registry.key



得到私钥文件之后,下面用这个私钥来生成证书,首先为证书配置一些基本的注册信息



SRV_CommonName这个配置项,如果公司有自己的域名,可以指定域名,这样会便利一些,如果没有的话,就直接用Docker私有仓库的ip地址。对于使用ip地址作为SRV_CommonName的情况,还需要编辑一下openssl的配置文件,本例就是用的ip地址,所以往下看,只用域名的话,可以跳过下面这段。


编辑/etc/pki/tls/openssl.cnf文件,[ v3_ca ]下添加subjectAltName=IP:10.240.227.50




注意  SRV_CommonName使用的是ipopenssl的配置文件没有更改,Docker客户端之后使用生成的证书时候会报错:Get https://xxx:xxx/v1/_ping: x509: cannot validate certificate forxxx because it doesn't contain any IP SANs


准备工作完成之后,下面就来生成证书,命名为registry.crt



   至此,证书已经生成完毕了。


1.2启动Docker私有仓库容器




说明一下参数的意义:

-v

/docker/docker_registry_images:/var/lib/registry/docker/registry/v2

指定Docker镜像存储的路径,将容器宿主机的本地目录/docker/docker_registry_images映射进容器


-v/docker/docker_registry_certs:/certs 将证书存放的目录映射进容器


-eREGISTRY_HTTP_TLS_CERTIFICATE -e REGISTRY_HTTP_TLS_KEY 指定的是证书的路径,指的是容器内的路径,在/certs目录下


-e后面跟的一些参数也可用直接通过config.yml,定义完config.yml之后,可以通过以下命令启动Docker私有仓库容器。



  关于config.yml提供了非常多的自定义配置项,详细可以参考以下链接,非常详细:



仓库启动之后,在容器所在宿主机,测试Docker私有仓库是否可用


 

  至此,Docker私有仓库的容器启动完成了。


1.3客户端如何使用Docker私有仓库容器


在客户端容器的宿主机上,创建一个以先前创建证书是CN所赋的值命名的目录




将先前生成的证书文件registry.crt,拷贝到客户端容器宿主机上/etc/docker/certs.d/10.240.227.50目录下,并更名为ca.crt




注意  添加完证书之后,需要重启Docker服务: systemctl restart docker.service


查看私有仓库中的镜像列表信息



   从Docker私有仓库拉镜像



   上传镜像到Docker私有仓库




2、搭建需证书加用户名密码认证的Docker私有仓库


1的基础上,在加上用户名和密码认证,首先需要创建一个包含用户和密码的文件




清除之前的docker registry容器,重新启动一个新的




此时在客户端,push镜像之前就需要先登录




 

  使用curl 获取镜像列表是需要添加用户名和密码




否则会报错




3、参考文档


https://docs.docker.com/registry/deploying/

http://www.jingyuyun.com/article/3991.html

http://livedig.com/686

https://docs.docker.com/registry/configuration/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值