5.3 搭建本地私有仓库
1.使用registry镜像创建私有仓库
安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境:
- $ docker run -d -p 5000:5000 registry
这将自动下载并启动一个registry容器,创建本地的私有仓库服务。
默认情况下,会将仓库创建在容器的/tmp/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径。
例如下面的例子将上传的镜像放到/opt/data/registry目录:
- $ 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系统查看已有的镜像:
- $ docker images
- REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
- 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]):
- $ docker tag ubuntu:14.04 10.0.2.2:5000/test
- $ docker images
- REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
- ubuntu 14.04 ba5877dc9bec 6 days ago 199.3 MB
- 10.0.2.2:5000/test latest ba5877dc9bec 6 days ago 199.3 MB
使用docker push上传标记的镜像:
- $ docker push 10.0.2.2:5000/test
- The push refers to a repository [10.0.2.2:5000/test] (len: 1)
- Sending image list
- Pushing repository 10.0.2.2:5000/test (1 tags)
- Image 511136ea3c5a already pushed, skipping
- Image 9bad880da3d2 already pushed, skipping
- Image 25f11f5fb0cb already pushed, skipping
- Image ebc34468f71d already pushed, skipping
- Image 2318d26665ef already pushed, skipping
- Image ba5877dc9bec already pushed, skipping
- Pushing tag for rev [ba5877dc9bec] on
- {http://10.0.2.2:5000/v1/repositories/test/tags/latest}
用curl查看仓库10.0.2.2:5000中的镜像:
- $ curl http://10.0.2.2:5000/v1/search
- {"num_results": 1, "query": "", "results": [{"description": "", "name": "library/
- test"}]}
在结果中可以看到{"description":"","name":"library/test"},表明镜像已经成功上传了。现在可以到任意一台能访问到10.0.2.2地址的机器去下载这个镜像了。
比较新的Docker版本对安全性要求较高,会要求仓库支持SSL/TLS证书。对于内部使用的私有仓库,可以自行配置证书或关闭对仓库的安全性检查。
首先,修改Docker daemon的启动参数,添加如下参数,表示信任这个私有仓库,不进行安全证书检查:
- DOCKER_OPTS="--insecure-registry 10.0.2.2:5000"
之后重启Docker服务,并从私有仓库中下载镜像到本地:
- $ sudo service docker restart
- $ docker pull 10.0.2.2:5000/test
- Pulling repository 10.0.2.2:5000/test
- ba5877dc9bec: Download complete
- 511136ea3c5a: Download complete
- 9bad880da3d2: Download complete
- 25f11f5fb0cb: Download complete
- ebc34468f71d: Download complete
- 2318d26665ef: Download complete
- $ docker images
- REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
- 10.0.2.2:5000/test latest ba5877dc9bec 6 days ago 199.3 MB
下载后,还可以添加一个更通用的标签ubuntu:14.04:
- $ docker tag 10.0.2.2:5000/test ubuntu:14.04
注意
如果要使用安全证书,用户也可以从较知名的CA服务商(如verisign)申请公开的SSL/TLS证书,或者使用openssl等软件来自行生成。
