Docker支持采用仓库(本处指的是registry)来支持镜像的分发和更新管理。这极大的便利了用户。
官方提供了dockerhub网站来作为一个公开的集中仓库。然而,本地访问dockerhub速度往往很慢,并且很多时候我们需要一个本地的私有仓库只供网内使用。
关于如何创建和使用本地仓库,其实已经有很多文章介绍了。
但是这些文章要么内容已经过时,要么给出了错误的配置,导致无法正常创建仓库。
首先,需要介绍下原理。
Docker仓库实际上提供两方面的功能,一个是镜像管理,一个是认证。
前者主要由docker-registry项目来实现,通过http服务来上传下载;后者可以通过docker-index项目或者利用现成认证方案实现http请求管理。
今天先不讨论如何实现认证环节。
docker-registry既然也是软件应用,自然最简单的方法就是使用官方提供的已经部署好的镜像registry。
官方文档中也给出了建议,直接运行sudo docker run -p 5000:5000 registry命令。这样确实能启动一个registry服务器,但是所有上传的镜像其实都是由docker容器管理,放在了/var/lib/docker/....某个目录下。而且一旦删除容器,镜像也会被删除。
因此,我们需要想办法告诉docker容器镜像应该存放在哪里。
registry镜像中启动后镜像默认位置是/tmp/registry,因此直接映射这个位置即可,比如到本机的/opt/data/registry目录下。
可以使用命令
sudo dockerrun -d -p 5000:5000 -v /opt/data/registry:/tmp/registry
registry
这样就可以了,完全不需要指定配置文件等其它复杂配置。
更具体的内容,可以参考http://yeasy.gitbooks.io/docker_practice/repository/local_repo.html