搭建私有Docker Registry

Registry是Docker的重要组件--镜像仓库, 与OpenStack的Glance有一些相似之处。

我们可以使用Docker官方的Registry,但是可能会受到网络的影响,那么我们在本地搭建自己的私有Registry!

下面是我在Ubuntu 14.04上搭建Docker Registry的具体过程:

1.   docker-registry是使用Python来开发的,我们会使用pip来进行安装,那么在此之前我们需要安装一些必要软件

sudo apt-get update
sudo apt-get -y install build-essential python-dev libevent-dev python-pip liblzma-dev swig

2.    安装docker-registry

sudo pip install docker-registry

3.   找到docker-registry的配置文件,我的方法为,进入python shell, 然后import docker_registry.wsgi,如果配置文件不存在就会报错docker_registry.core.exceptions.FileNotFoundError,从错误信息我们就得到了配置文件的具体路径/usr/local/lib/python2.7/dist-packages/docker_registry/lib/../../config/config.yml(这个路径可能会有差异),然后我们进入配置文件的父目录/usr/local/lib/python2.7/dist-packages/docker_registry/lib/../../config/,可以看到这个目录下有个config_sample.yml, 那么我们复制该文件到config.yml, 这就是docker-registry会使用的配置文件了。默认情况下,配置文件里会将一些持久性文件存放在/tmp文件夹下,而这个文件夹用于存放临时文件,系统重启后文件会丢失,因此我们需要修改这些相关配置,我们首先创建一个文件夹mkdir /var/lib/docker-registry, 然后编辑此配置文件,搜索/tmp关键字,然后替换它为/var/lib/docker-registry即可。


4.   验证安装成功与否以及配置文件是否有误,运行docker-registry:

gunicorn --debug -k gevent -b 0.0.0.0:20000 -w 8 docker_registry.wsgi:application

      如果看到如下输出,那么就没有问题了:

17/Jan/2017:09:49:30 +0000 WARNING: Cache storage disabled!
17/Jan/2017:09:49:30 +0000 WARNING: LRU cache disabled!
17/Jan/2017:09:49:30 +0000 WARNING: Cache storage disabled!
17/Jan/2017:09:49:30 +0000 WARNING: LRU cache disabled!
17/Jan/2017:09:49:30 +0000 DEBUG: Will return docker-registry.drivers.file.Storage
17/Jan/2017:09:49:30 +0000 DEBUG: Will return docker-registry.drivers.file.Storage
17/Jan/2017:09:49:30 +0000 WARNING: Another process is creating the search database

5.   以服务的形式运行docker-registry, 首先创建日志目录 mkdir /var/log/docker-registry, 然后创建upstart脚本, vim /etc/init/docker-registry.conf, 将以下内容写入文件,可根据实际情况修改gunicorn的运行参数,譬如监听的ip和端口:

description "Docker Registry"
start on runlevel [2345]
stop on runlevel [016]

respawn
respawn limit 10 5

script
    exec gunicorn --access-logfile /var/log/docker-registry/access.log --error-logfile /var/log/docker-registry/server.log -k gevent --max-requests 100 --graceful-timeout 3600 -t 3600 -b 0.0.0.0:5555 -w 8 docker_registry.wsgi:application
end script

6.   我们最好使用Apache或者Nginx来作为gunicorn的反向代理,这样能保证docker-registry的安全性! 创建apache的docker-registry配置,vim /etc/apache2/conf-available/docker-registry.conf, 将以下内容写入文件, apache的端口以及gunicorn的IP和端口根据实际情况进行修改:

<VirtualHost *:20000>
ProxyPass / http://127.0.0.1:5555/
</VirtualHost>

     编辑ports文件,vim   /etc/apache2/ports.conf, 追加一行"Listen 20000",这个20000端口需要与上述配置里的端口保持一致; 如果ports文件里面已经有这一行了,那么不要重复添加

     最后运行如下命令即可:

a2enconf docker-registry
a2enmod proxy_http
service apache2 restart

7.   验证部署是否成功,  在apache服务器上运行:

curl http://127.0.0.1:20000/

     观察输出是否如下所示:

"\"docker-registry server\""














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值