搭建自己的 Docker 私有仓库服务 | Vpsee.com
搭建自己的 Docker 私有仓库服务 | Vpsee.com
docker 私有仓库
搭建自己的 Docker 私有仓库服务
2013年11月6日 | 标签: docker, lxc | 作者:vpsee
关于 Docker 的介绍这里就省了,Docker 在其相关领域的火爆程度不亚于今年汽车行业里的特斯拉,docCloud 甚至把公司名都改成了 Docker, Inc. 好东西总是传播很快,我们现在已经有客户在 VPS 上用 Docker 来部署应用了。不了解 Docker 的小伙伴们可以看看 使用 Docker/LXC 迅速启动一个桌面系统 开头部分的介绍。
和初次接触 Xen/KVM 虚拟技术的体验不同,Docker 不用自己动手制作镜像,官方已经提供了很多版本的 Linux 镜像,直接从官方仓库(Public Repositories)下载就可以了。如果考虑到安全性和速度,我们可能会想在自己局域网里架设一个私有仓库(Private Repositories)来放我们自己的镜像,Docker-Registry 正是我们需要的工具。
用 git 下载源码后修改配置文件 config.yml,把 storage_path 部分改成 Docker 镜像仓库的存放地点:
$ git clone https://github.com/dotcloud/docker-registry
$ cd docker-registry
$ cp config_sample.yml config.yml
$ vi config.yml
...
# This is the default configuration when no flavor is specified
dev:
storage: local
storage_path: /home/vpsee/registry
loglevel: debug
...
$ mkdir /home/vpsee/registry
安装一些必要软件包和一些 Docker-Registry 需要用到的 Python 工具和库:
$ sudo apt-get install build-essential python-dev libevent-dev python-pip libssl-dev
$ sudo pip install -r requirements.txt
Docker-Registry 实际上是个基于 Flask 的 web app,安装成功后就可以这样运行了:
$ sudo gunicorn --access-logfile - --debug -k gevent -b 0.0.0.0:80 -w 1 wsgi:application
打开浏览器,访问 IP 地址就可以看到 docker-registry 私有仓库在运行了:

查看一下现有系统上已经有了哪些镜像:
$ sudo docker images
REPOSITORY TAG ID CREATED SIZE
vpsee/ubuntu latest 936a54e8a345 2 weeks ago 12.29 kB (virtual 327.8 MB)
ubuntu latest 8dbd9e392a96 6 months ago 131.5 MB (virtual 131.5 MB)
ubuntu precise 8dbd9e392a96 6 months ago 131.5 MB (virtual 131.5 MB)
ubuntu quantal b750fe79269d 7 months ago 24.65 kB (virtual 180.1 MB)
我们打算把 vpsee/ubuntu 这个镜像(ID 是 936a54e8a345)上传(push)到我们刚创建的私有仓库里(这个私有仓库的 IP 地址是 192.168.2.45),会看到提示 Username/Password,初次 push 的话,可以自己设置用户名和密码:
$ sudo docker tag 936a54e8a345 192.168.2.45/vpsee
$ sudo docker push 192.168.2.45/vpsee
Username: vpsee
Password:
Email: docker@vpsee.com
Account created. Please use the confirmation link we sent to your e-mail to activate it.
The push refers to a repository [192.168.2.45/vpsee] (len: 1)
Processing checksums
Sending image list
Pushing repository 192.168.2.45/vpsee (1 tags)
Pushing 8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c
Buffering to disk 58266504/? (n/a)
Pushing 58.27 MB/58.27 MB (100%)
完成 push 后,我们的私有仓库就有了第一个镜像了:
$ sudo docker images
REPOSITORY TAG ID CREATED SIZE
vpsee/ubuntu latest 936a54e8a345 2 weeks ago 12.29 kB (virtual 327.8 MB)
ubuntu latest 8dbd9e392a96 6 months ago 131.5 MB (virtual 131.5 MB)
ubuntu precise 8dbd9e392a96 6 months ago 131.5 MB (virtual 131.5 MB)
ubuntu quantal b750fe79269d 7 months ago 24.65 kB (virtual 180.1 MB)
192.168.2.45/vpsee latest 936a54e8a345 2 weeks ago 12.29 kB (virtual 327.8 MB)
以后只要 docker pull 192.168.2.45/vpsee 就可以从我们自己的私有仓库下载和运行镜像了,本地网络速度当然会快很多。
发表评论(10 Comments) 分类:Cloud | Virtualization | Thin | HPC
评论 (10 Comments)
- rongze - November 10th, 2013 12:58 pm
要是docker index也能私有就好了… - 浩子 - November 12th, 2013 12:57 am
这个技术文档有用。 - January 10th, 2014 11:04 am
咨询如何搜索私有仓库服务内的镜像?
- January 10th, 2014 11:04 am
- Fengyu - March 17th, 2014 1:29 pm
目前这个方案已经过时了,docker-registry官方github上写的是docker run -p 5000:5000 registry - yooke - August 15th, 2014 6:45 pm
回3楼:如楼主的例子可以通过http://192.168.2.45/v1/search来获取私有仓库内的镜像。 - nivance - October 16th, 2014 5:28 pm
请问账户没激活是怎么解决的?谢谢
[root@dldt078 docker-registry]# docker push mysql/5.6 http://0.0.0.0:5000/mysql/5.6
The push refers to a repository [mysql/5.6] (len: 1)
Sending image list
2014/10/16 14:53:56 Error: Status 403 trying to push repository mysql/5.6: Account is not Active - nivance - October 30th, 2014 7:31 pm
我命令写错了,应该是docker push http://0.0.0.0:5000/mysql/5.6 - November 19th, 2014 7:31 pm
为什么我照着你的方法搭不起来呢,gunicorn启动错误,“WORKER_BOOT_ERROR”
- November 19th, 2014 7:31 pm
- Anonymous - March 27th, 2015 1:53 pm
我想问问push到私有库下面的镜像如何去删除?知道的说一下? - Anonymous - February 26th, 2016 4:01 pm
昵称:

