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镜像
#安装相关环境依赖
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镜像