5.3 搭建本地私有仓库

1.使用registry镜像创建私有仓库

安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境:


  1. $ docker run -d -p 5000:5000 registry

这将自动下载并启动一个registry容器,创建本地的私有仓库服务。

默认情况下,会将仓库创建在容器的/tmp/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径。

例如下面的例子将上传的镜像放到/opt/data/registry目录:


  1. $ docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

此时,在本地将启动一个私有仓库服务,监听端口为5000。

2.管理私有仓库

首先在本书环境的笔记本上(Linux Mint)搭建私有仓库,查看其地址为10.0.2.2:5000。然后在虚拟机系统(Ubuntu 14.04)里测试上传和下载镜像。

在Ubuntu 14.04系统查看已有的镜像:


  1. $ docker images
  2. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  3. ubuntu 14.04 ba5877dc9bec 6 days ago 199.3 MB

使用docker tag命令将这个镜像标记为10.0.2.2:5000/test(格式为docker tag IMAGE[:TAG][REGISTRYHOST/][USERNAME/]NAME[:TAG]):


  1. $ docker tag ubuntu:14.04 10.0.2.2:5000/test
  2. $ docker images
  3. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  4. ubuntu 14.04 ba5877dc9bec 6 days ago 199.3 MB
  5. 10.0.2.2:5000/test latest ba5877dc9bec 6 days ago 199.3 MB

使用docker push上传标记的镜像:


  1. $ docker push 10.0.2.2:5000/test
  2. The push refers to a repository [10.0.2.2:5000/test] (len: 1)
  3. Sending image list
  4. Pushing repository 10.0.2.2:5000/test (1 tags)
  5. Image 511136ea3c5a already pushed, skipping
  6. Image 9bad880da3d2 already pushed, skipping
  7. Image 25f11f5fb0cb already pushed, skipping
  8. Image ebc34468f71d already pushed, skipping
  9. Image 2318d26665ef already pushed, skipping
  10. Image ba5877dc9bec already pushed, skipping
  11. Pushing tag for rev [ba5877dc9bec] on
  12. {http://10.0.2.2:5000/v1/repositories/test/tags/latest}

用curl查看仓库10.0.2.2:5000中的镜像:


  1. $ curl http://10.0.2.2:5000/v1/search
  2. {"num_results": 1, "query": "", "results": [{"description": "", "name": "library/
  3. test"}]}

在结果中可以看到{"description":"","name":"library/test"},表明镜像已经成功上传了。现在可以到任意一台能访问到10.0.2.2地址的机器去下载这个镜像了。

比较新的Docker版本对安全性要求较高,会要求仓库支持SSL/TLS证书。对于内部使用的私有仓库,可以自行配置证书或关闭对仓库的安全性检查。

首先,修改Docker daemon的启动参数,添加如下参数,表示信任这个私有仓库,不进行安全证书检查:


  1. DOCKER_OPTS="--insecure-registry 10.0.2.2:5000"

之后重启Docker服务,并从私有仓库中下载镜像到本地:


  1. $ sudo service docker restart
  2. $ docker pull 10.0.2.2:5000/test
  3. Pulling repository 10.0.2.2:5000/test
  4. ba5877dc9bec: Download complete
  5. 511136ea3c5a: Download complete
  6. 9bad880da3d2: Download complete
  7. 25f11f5fb0cb: Download complete
  8. ebc34468f71d: Download complete
  9. 2318d26665ef: Download complete
  10. $ docker images
  11. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  12. 10.0.2.2:5000/test latest ba5877dc9bec 6 days ago 199.3 MB

下载后,还可以添加一个更通用的标签ubuntu:14.04:


  1. $ docker tag 10.0.2.2:5000/test ubuntu:14.04

5.3 搭建本地私有仓库 - 图1注意

如果要使用安全证书,用户也可以从较知名的CA服务商(如verisign)申请公开的SSL/TLS证书,或者使用openssl等软件来自行生成。