構建docker私有倉庫
有了docker hub和阿里或者網易的映象倉庫等之後,為什麼還有自己構建倉庫呢?一是為了安全,二是為了內網能訪問,三是如果是在內網,速度會更加快。本文我們就介紹如何構建自己的docker倉庫。
環境準備
環境:兩個裝有Docker 17.09.0-ce 的centos7虛擬機器
虛擬機器一:192.168.1.175 使用者開發機
虛擬機器二:192.168.1.174 用作私有倉庫
搭建私有倉庫
在174機器上面
docker pull registry
下載完之後我們通過該映象啟動一個容器
docker run -d -p 5000:5000 registry
預設情況下,會將倉庫存放於容器內的/tmp/registry目錄下,這樣如果容器被刪除,則存放於容器中的映象也會丟失,所以我們一般情況下會指定本地一個目錄掛載到容器內的/tmp/registry下,
不過具體的情況還是要到容器裡去看
先啟動容器
docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
b4c21ca8cf8a23ea72e0471909742541ffc312ea5cf492486b5bdc3130179864
測試
接下來我們就要操作把一個本地映象push到私有倉庫中。首先在174機器下pull一個比較小的映象來測試(此處使用的是busybox)。
docker pull busybox
接下來修改一下該映象的tag。
docker tag busybox 192.168.1.174:5000/busybox
接下來把打了tag的映象上傳到私有倉庫。
docker push 192.168.1.174:5000/busybox
接下來看到了錯誤:
The push refers to a repository [192.168.1.174:5000/registry] Get https://192.168.1.174:5000/v1/_ping: http: server gave HTTP response to HTTPS client
這個問題可能是由於客戶端採用https,docker registry未採用https服務所致。一種處理方式是把客戶對地址“192.168.1.174:5000”請求改為http。
目前很多文章都是通過修改docker的配置檔案“etc/systemconfig/docker",重啟docker來解決這個問題,,根據網上建立此檔案,並填入相應內容,重啟docker無效果,仍然報此錯誤。
解決方法:
在”/etc/docker/“目錄下,建立”daemon.json“檔案。在檔案中寫入:
{ "insecure-registries":["192.168.1.174:5000"] }
儲存退出後,重啟docker。問題解決。
docker push 192.168.1.174:5000/busybox
成功的。
在175機器上同樣修改/etc/docker/daemon.json
docker pull 192.168.1.174:5000/busybox
拉取映象成功,