1. 程式人生 > 其它 >(九)Docker私有倉庫搭建

(九)Docker私有倉庫搭建

一、簡介

倉庫(Repository)是集中存放映象的地方,又分為公共映象和私有倉庫。
當我們執行docker pull xxx的時候,它實際上是從registry.docker.com這個地址去查詢,這就是Docker公司為我們提供的公共倉庫。在工作中,我們不可能把企業專案上傳到公共倉庫進行管理,所以為了更多管理映象,Docker允許我們搭建本地私有倉庫。
私有倉庫最常用的就是registry、Harbor兩種,那接下來詳細介紹如何搭建私有倉庫。

二、搭建registry私有倉庫

Docker 官方提供了一個搭建私有倉庫的映象registry,只需把映象下載下來,執行容器並暴露5000埠,就可以使用了。程式碼如下:

1、下載映象

docker pull registry:2

2、執行容器

docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
registry服務預設將上傳的映象儲存在容器的/var/lib/registry,使用-v引數將容器的/var/lib/registry目錄對映到本地/opt/registry目錄。即可實現將映象儲存到宿主機/opt/registry目錄。
瀏覽器訪問http://宿主機IP:5000/v2,顯示“{}” 說明registry執行正常。

三、上傳映象到私有倉庫

現在通過push將映象上傳至私有倉庫,具體步驟如下:

1、下載docker hub官方映象

docker pull ubuntu

2、將映象標誌為要推送到私有倉庫:

docker tag ubuntu:latest 10.43.187.251:5000/myubuntu:v1

3、上傳映象到私有倉庫

[root@qll251 ~]# docker push 10.43.187.251:5000/myubuntu:v1
The push refers to repository [10.43.187.251:5000/myubuntu]
Get https://10.43.187.251:5000/v2/: http: server gave HTTP response to HTTPS client
注意,上傳映象時報錯了:http: server gave HTTP response to HTTPS client
出現這個問題原因是:Docker自從1.3.X之後docker registry互動預設使用的是HTTPS,但是搭建私有映象預設使用的是HTTP服務,所以與私有倉庫互動時出現以上錯誤。


解決辦法:

1、編輯 /etc/docker/daemon.json,在檔案中寫入:

{ "insecure-registries":["10.43.187.251:5000"] }

2、重啟生效:

systemctl daemon-reload
systemctl restart docker
再次上傳,問題解決:
docker pull 10.43.187.251:5000/myubuntu:v1

四、客戶端下載私有映象

我們在另外一臺docker機器上,進行pull測試:
[root@qll252 ~]# docker pull 10.43.187.251:5000/myubuntu:v1
Trying to pull repository 10.43.187.251:5000/myubuntu ...
Get https://10.43.187.251:5000/v1/_ping: http: server gave HTTP response to HTTPS client
會發現跟前面上傳映象報了同樣的錯誤。
解決方法同上:

1、編輯/etc/docker/daemon.json配置檔案,在檔案中寫入:

{"insecure-registries":["10.43.187.251:5000"]}

2、重啟生效:

systemctl daemon-reload
Systemctl restart docker
再次從私有倉庫中下載映象:
[root@qll252 ~]# docker pull 10.43.187.251:5000/myubuntu:v1
Trying to pull repository 10.43.187.251:5000/myubuntu ...
v1: Pulling from 10.43.187.251:5000/myubuntu
d51af753c3d3: Pull complete
fc878cd0a91c: Pull complete
6154df8ff988: Pull complete
fee5db0ff82f: Pull complete
Digest: sha256:5747316366b8cc9e3021cd7286f42b2d6d81e3d743e2ab571f55bcd5df788cc8
Status: Downloaded newer image for 10.43.187.251:5000/myubuntu:v1
驗證通過,到此已完成私有倉庫的搭建工作了。
說明:在後續教程我們學習到docker-compose時,載為搭建介紹企業級harbor私有倉庫及搭建過程。