docker私有仓库搭建完整记录(git方式)

1.本地安装docker-registry


#安装相关环境依赖
sudo apt-get install build-essential python-dev libevent-dev python-pip libssl-dev liblzma-dev libffi-dev
#git下载docker-registry
git clone https://github.com/docker/docker-registry.git
cd docker-registry
#安装docker-registry
sudo python setup.py install
问题记录:到这一步进行的过程中需要安装requirments.txt中的相关模块,在此安装到其中一个时出现错误:
/**********************************************************************************/
Searching for M2Crypto==0.22.3
.....
unable to execute 'swig': No such file or directory
error: Setup script exited with error: command 'swig' failed with exit status 1
/**********************************************************************************/
解决方法:
sudo apt-get install swig
sudo apt-get install python-m2crypto
相关链接:http://stackoverflow.com/questions/7772965/m2crypto-doesnt-install-in-venv-or-swig-doesnt-define-x86-64-which-breaks


在刚才的目录中重新执行:
sudo python setup.py install


可以看到安装顺利,没有出现错误


2.运行docker-registry


#修改配置文件config.yml
cp config/config_sample.yml config/config.yml
#打开config.yml文件,将dev:下storage_path的值改为本地仓库存储的路径
sudo vim config/config.yml


#运行docker-registry
sudo gunicorn --access-logfile - --error-logfile - -k gevent -b 0.0.0.0:5000 -w 4 --max-requests 100 docker_registry.wsgi:application
问题记录:此处直接运行时会报错
/***********************************************************************************/
FileNotFoundError: Heads-up! File is missing: /usr/local/lib/python2.7/dist-packages/docker_registry-1.0.0_dev-py2.7.egg/docker_registry/lib/../../config/config.yml
......
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
/***********************************************************************************/
原因显然是上面提示的文件缺失,我们修改了当前目录下的config.yml文件,但是运行时调用的是系统目录下的文件,而config.yml此时是不存在的


解决方法:
cd /usr/local/lib/python2.7/dist-packages/docker_registry-1.0.0_dev-py2.7.egg/config
cp config_sample.yml config.yml
注:同上,需修改config.yml中dev:下storage_path的值为本地仓库存储的路径,没有则添加


#再次运行
sudo gunicorn --access-logfile - --error-logfile - -k gevent -b 0.0.0.0:5000 -w 4 --max-requests 100 docker_registry.wsgi:application


运行成功,访问0.0.0.0:5000时可以看到docker-registry 的版本信息说明


3.push/pull镜像到私有仓库


#先从官网pull一个简单的镜像用作测试
docker pull busybox


#更改镜像tag,192.168.32.139为本地ip
docker tag busybox 192.168.32.139:5000/busybox


#push镜像到私有仓库
docker push 192.168.32.139:5000/busybox


问题记录:到这一步会提示错误
/****************************************************************************/
unable to ping registry endpoint https://192.168.32.139:5000/v0/
v2 ping attempt failed with error: Get https://192.168.32.139:5000/v2/: EOF
 v1 ping attempt failed with error: Get https://192.168.32.139:5000/v1/_ping: EOF
/****************************************************************************/
原因在于docker daemon 的启动参数设置问题,应该添加:
--insecure-registry=192.168.32.139:5000
用一般添加的方式操作之后发现错误并没有得到解决,知道找到网上的一篇博文


解决方法:


#打开docker启动文件
sudo vim /etc/default/docker
#在文件末尾添加OPTIONS字段
OPTIONS=--insecure-registry 192.168.32.139:5000


#打开系统中docker.service文件
sudo vim /lib/systemd/system/docker.service
#在文件中的[Service]下添加并修改下面两行:
EnvironmentFile=-/etc/default/docker
ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS


#重新加载参数
sudo systemctl daemon-reload
#重启服务
sudo systemctl restart docker


问题至此得到解决,可以正常的在私有仓库中push/pull镜像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值