1. 程式人生 > >docker私有倉庫搭建完整記錄(git方式)

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映象