在調研 Marathon 的過程中遇到了一個問題。就是每次新建APP的時候。總是會重新的去docker hub上push 鏡像。導致每次啓動app的時間都很漫長,嚴重影響了自己的進度。而沒有找到合適的方式如何讓其使用本地的 image, 所以就想就此機會搭建一個自己的 Provider docker registry。 畢竟自己也經常性的需要在不同的機器上部署docker。這樣反而提升了部署效率。
版本信息:
Docker version 1.10.3, build 20f81dd
Ubuntu 14.04.4 LTS
setp 1: 安裝依賴包
$ sudo apt-get install -y build-essential python-dev libevent-dev python-pip liblzma-dev
$ sudo pip install docker-registry
setp2: 修改配置文件:
$ cd /usr/local/lib/python2.7/dist-packages/config
$ cp config_sample.yml config.yml
Note: 然後修改配置文件,主要修改 dev 模板段的 storage_path
到本地的存儲倉庫的路徑。 可以不用修改。使用默認值。
setp3: 啓動服務
$ sudo gunicorn --access-logfile - --error-logfile - -k gevent -b 0.0.0.0:5000 -w 4 --max-requests 100 docker_registry.wsgi:application
setp4: 驗證服務的可用性
# /usr/local/lib/python2.7/dist-packages/config# curl http://127.0.0.1:5000/v1/search
在想要使用我們自己的provider docker registry的計算節點上,我們需要做如下配置:
由於我們搭建的沒有支持ssl服務。所以我們在跨主機訪問的時候,可能會遇到報錯說當您使用http服務而不是httpsdshihou.xuyao在配置文件中配置一參數:
# vi /etc/default/docker
添加如下內容:DOCKER_OPTS="--insecure-registry x.x.x.x:5000"
# service docker restart
至此我們的工作就完成了。現在我們就可以使用自己的 Provider Docker Registry了。
使用方法舉例:
如果我們想把自己的本地鏡像push到 provider docker registry 我們只需要使用如下命令:
$ sudo docker tag image_id 192.168.7.26:5000/test
其中 使用docker tag
將
ba58xxxxx(image_id)
這個鏡像標記爲 192.168.7.26:5000/test
(格式爲
docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
)。 $ sudo docker push 192.168.7.26:5000/test
這樣就將 自己本地的鏡像push到服務器上了。
使用 provider docker registry的image 下載到本地的命令如下:
$ sudo docker pull 192.168.7.26:5000/test
參考:http://udn.yyuap.com/doc/docker_practice/repository/local_repo.html