基本概念
仓库是集中存放镜像的地方。
Docker Hub
Docker Hub是Docker官方维护的一个公共仓库。
执行docker login命令登录,本地用户目录下的.dockercfg文件中保存了用户的认证信息。
使用docker search命令查找官方仓库中的镜像,使用docker pull命令下载镜像到本地。
私有仓库的搭建 — 使用Docer-registry
通常从官方维护的中央仓库下载镜像会比较慢,或者公司内部想搭建一个私有的仓库以供内部人员使用,此时我们可以使用官方提供的registry镜像搭建我们自己的私有仓库。
1. 环境准备
两台Ubuntu虚拟机,分别装有Docker,在192.168.1.102上部署私有仓库,192.168.1.101作为测试机。
2. 下载镜像
在192.168.1.102上使用docker pull下载registry镜像。
3. 运行容器
$ sudo docker run –d –p 5000:5000 registry
默认情况下,上传的仓库会存放在该容器内的/tmp/registry目录下,当容器被删除时镜像也会丢失,我们需要另外指定一个本地目录用于存放上传的镜像,将该目录挂载到容器内的/tmp/registry目录下。
$ sudo docker run –d –p 5000:5000 –v /opt/data/registry:/tmp/registry registry
4. 上传下载查询镜像
首先我们下载在测试机192.168.1.101上下载一个镜像busybox,并修改该镜像的tag。
然后使用docker push上传该镜像到私有仓库中。会发现返回错误信息。
这是因为Docker从1.3.X后,与docker registry交互时默认是使用https的,而我们之前启动的私有仓库仅提供了http服务,所以当我们向私有仓库上传或者下载镜像的时候提示地址错误。
我们可以修改docker的配置,使得访问192.168.1.102这个私有仓库的时候默认使用http方式。
在测试机192.168.1.101上修改docker的启动配置文件,Ubuntu下文件地址为:/etc/init/docker.conf,在其中启动docker后台的命令中增加—insecure-registry 192.168.1.102:5000参数。
然后再重启docker服务,之后再向私有仓库上传下载镜像就能成功了。
我们应该怎样查询私有仓库中有哪些镜像呢? 可以使用如下方法。
如果不设置认证机制,允许局域网内所有用户访问私有仓库的话,那么至此仓库的搭建就算成功了。
5. 添加认证机制
较麻烦,目前尚未实际操作过,可以参考:http://segmentfault.com/blog/seanlook/1190000000801162.