转:http://blog.csdn.net/felix_yujing/article/details/51564739python
新版 registry v2对镜像存储格式进行了从新设计,而且和旧版还不兼容。registry v2是由go语言开发,docker从1.6版本开始支持registry v2,以前python开发的老版registry在网上已被标为废弃了(没有维护更新,但也能够用)。
以前在测试环境搭建了一个老版的registry,用了也比较久了。为了跟上技术的脚步,也准备从此使用新版registry v2。因为对旧版是不兼容的,因此以前仓库的数据目录还不能直接拿来挂载,只好从新作个新的,镜像只好等之后慢慢再放上去了。下面对我此次配置的步骤简单的介绍一下。
0. 服务器环境
本次使用centos7.1的操做系统,服务器IP假设为:192.168.0.100
预先装好docker服务,操做以下:docker
1. 获取最新的registry的容器
了解到目前最新版为2.4.1,因而直接使用docker pull命令从公用仓库去拉便可json
2. 运行registry:2.4.1容器
这里须要注意的是新registry仓库数据目录的位置。以前老版的位置是/tmp/registry,hub.docker.com上的演示命令里写的是/tmp/registry-dev,其实这个不对。试验证实,新registry的仓库目录是在/var/lib/registry,因此运行时挂载目录须要注意。centos
-v选项指定将/opt/registry-var/目录挂载给/var/lib/registry/
当使用curl http://192.168.0.100:5000/v2/_catalog能看到json格式的返回值时,说明registry已经运行起来了。
3. 修改配置文件以指定registry地址
上面registry虽然已经运行起来了,可是若是想用push命令上传镜像是会报错的,须要在配置文件中指定registry的地址。在/etc/sysconfig/docker文件中添加一下配置:安全
为了配置简单,省去安全相关的配置,这里使用--insecure-registry选项。
修改配置文件后,必定要重启docker服务才能生效,因此:服务器
这时再push就能够上传镜像到所搭建的registry仓库了。须要注意的是,上传前要先给镜像tag一个192.168.0.100:5000/为前缀的名字,这样才能在push的时候存到私库。curl
4. 配置带用户权限的registry
到上面为止,registry已经可使用了。若是想要控制registry的使用权限,使其只有在登陆用户名和密码以后才能使用的话,还须要作额外的设置。
registry的用户名密码文件能够经过htpasswd来生成:测试
上面这条命令是为felix用户名生成密码为felix的一条用户信息,存在/opt/registry-var/auth/htpasswd文件里面,文件中存的密码是被加密过的。
使用带用户权限的registry时候,容器的启动命令就跟上面不同了,将以前的容器停掉并删除,而后执行下面的命令:加密
这时,若是直接想查看仓库信息、pull或push都会出现权限报错。必须先使用docker login 命令来登陆私有仓库:url
根据提示,输入用户名和密码便可。若是登陆成功,会在/root/.docker/config.json文件中保存帐户信息,这样就能够继续使用了。