18.1 安装Docker Registry

Docker Registry工具目前最新为2.0系列版本,这一版本与一些类库、工具一起被打包为负责容器内容分发的工具集:Docker Distribution。目前其核心的功能组件仍为负责镜像仓库的管理。

新版本的Registry基于Golang进行了重构,提供更好的性能和扩展性,并且支持Docker 1.6+的API,非常适合用来构建私有的镜像注册服务器。官方仓库中也提供了Registry的镜像,因此用户可以通过容器运行和源码安装两种方式来使用Registry。

1.基于容器安装运行

基于容器的运行方式十分简单,只需要一条命令:


  1. $ docker run -d -p 5000:5000 --restart=always --name registry registry:2.1

启动后比较关键的参数是指定配置文件和仓库存储路径。

Registry默认的配置文件为/etc/docker/registry/config.yml,因此,通过如下命令,可以指定使用本地主机上的配置文件(如/home/user/registry-conf)。


  1. $ docker run -d -p 5000:5000 \
  2. --restart=always \
  3. --name registry \
  4. -v /home/user/registry-conf/config.yml:/etc/docker/registry/config.yml \
  5. registry:2

此外,Registry默认的存储位置为/var/lib/registry,可以通过-v参数来映射本地的路径到容器内。

例如下面的例子将镜像存储到本地/opt/data/registry目录。


  1. $ docker run -d -p 5000:5000 --restart=always --name registry \
  2. -v /opt/data/registry:/var/lib/registry \
  3. registry:2

2.本地安装运行

有时候需要本地运行仓库服务,可以通过源码方式进行安装。

首先安装Golang环境支持,以Ubuntu为例,可以执行如下命令:


  1. $ sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable
  2. $ sudo apt-get update
  3. $ sudo apt-get install golang

确认Golang环境安装成功,并配置$GOPATH环境变量,例如/go。

创建$GOPATH/src/github.com/docker/目录,并获取源码,如下所示:


  1. $ mkdir -p $GOPATH/src/github.com/docker/
  2. $ cd $GOPATH/src/github.com/docker/
  3. $ git clone https://github.com/docker/distribution.git
  4. $ cd distribution

将自带的模板配置文件复制到/etc/docker/registry/路径下,创建存储目录/var/lib/registry:


  1. $ cp cmd/registry/config-dev.yml /etc/docker/registry/config.yml
  2. $ mkdir -p /var/lib/registry

然后执行安装操作:


  1. $ make PREFIX=/go clean binaries

编译成功后,可以通过下面的命令来启动:


  1. $ registry serve /etc/docker/registry/config.yml

此时使用访问本地的5000端口,看到返回成功(200 OK),则说明运行成功:


  1. $ curl -i 127.0.0.1:5000/v2/
  2. HTTP/1.1 200 OK
  3. Content-Length: 2
  4. Content-Type: application/json; charset=utf-8
  5. Docker-Distribution-Api-Version: registry/2.0
  6. X-Content-Type-Options: nosniff
  7. Date: Wed, 31 Sep 2016 06:36:10 GMT
  8. {}