1. 程式人生 > >Docker 私有倉庫的搭建

Docker 私有倉庫的搭建

docker 私有倉庫 registry


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

因為Docker1.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 私有倉庫的搭建