(九)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私有倉庫及搭建過程。