Docker 私有倉庫的搭建
Docker在2015年推出了distribution項目,即Docker Registry 2。相比於old registry,Registry 2使用Go實現,在安全性、性能方面均有大幅改進。Registry設計了全新的Rest API,並且在image存儲格式等方面不再兼容於old Registry。去年8月份,docker官方hub使用Registriy 2.1替代了原先的old Registry。如果你要與Registry2交互,你的Docker版本至少要是Docker 1.6。docker-Registry 具有以下優點
1、節省網絡帶寬,針對於每個鏡像不用每個人都去中央倉庫上面去下載,只需要從私有倉庫中下載即可;
2、提供鏡像資源利用,針對於公司內部使用的鏡像,推送到本地的私有倉庫中,以供公司內部相關人員使用。
環境準備,兩臺Centos7 機器
192.168.10.62 docker 版本1.12.6 用作開發機器
192.168.10.61 docker 版本 1.12.6 用作私有倉庫
搭建私有倉庫
下載鏡像
docker pull registry:2.3
啟動鏡像
mkdir –p /opt/data/registry
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry
指定本地一個目錄/opt/data/registry掛載到容器內的/var/lib/registry下
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9819f1221756 registry "/entrypoint.sh /etc/" 3 hours ago Up 36 minutes 0.0.0.0:5000->5000/tcp amazing_khorana
測試
在 192.168.10.62 開發機器上面提交鏡像
從docker hub 上獲取鏡像consul
docker pull consul:1.0.0
更改鏡像tag
docker tag docker.io/consul:1.0.0 192.168.10.61:5000/consul
提交鏡像至私有倉庫
docker push 192.168.10.61:5000/consul
報錯
The push refers to a repository [192.168.10.61:5000/consul]
Get https://192.168.10.61:5000/v1/_ping: http: server gave HTTP response to HTTPS client
因為Docker從1.3.X之後,與docker registry交互默認使用的是https,然而此處搭建的私有倉庫只提供http服務,所以當與私有倉庫交互時就會報上面的錯誤。為了解決這個問題需要在啟動docker server時增加啟動參數為默認使用http訪問。
解決方法:修改docker 啟動配置文件
CentOS:編輯 /etc/sysconfig/docker 文件,添加如下行:
other_args="--insecure-registry 192.168.10.61:5000"
重啟 Docker daemon:
systemctl restart docker
Ubuntu:編輯 /etc/default/docker 文件,添加如下行
DOCKER_OPTS="--insecure-registry 192.168.10.61:5000"
重啟 Docker daemon:
sudo systemctl restart docker
再次提交
docker push 192.168.10.61:5000/consul
刪除本地鏡像
docker rmi 192.168.10.61:5000/consul:latest
從私有倉庫拉取鏡像
docker pull 192.168.10.61:5000/consul
docker 私有倉庫查看已經提交的鏡像
docker search 192.168.10.61:5000/consul
Error response from daemon: Unexpected status code 404
奇怪從docker 開發機器已經正常提交,在開發機本地刪除鏡像,也可以從私有倉庫獲取,為什麽查不到呢
通過各種查詢資料,使用 registry v2 的 api 可以查看已經提交的docker 鏡像
curl http://192.168.10.61:5000/v2/_catalog
{"repositories":["busybox","consul","nginx"]}
本文出自 “sdsca” 博客,請務必保留此出處http://sdsca.blog.51cto.com/10852974/1974261
Docker 私有倉庫的搭建