Docker之docker私有倉庫搭建(第十七篇)
Docker 已經提供了docker hub倉庫,第三方也提供相應的倉庫,比如網易,時速雲,阿里雲等,那為什麼還要搭建自己私有的倉庫呢?
1)網路有關,有的時候你在的環境可能突然就斷網了,但是內部區域網還可以訪問,那麼你就可以去公司私有的倉庫去下載
2)安全性,你自己或者公司的專案,一定不會直接暴露給外面的人看到,所以安全性很重要。
3)便於部署,開發環境,測試環境,正式環境,可以通過私有倉庫拉取同一份映象一步部署,即可完成。
首頁要下載registry映象
docker pull registry
這個沒有指定地址,則預設是去docker hub上下載映象
檢視映象資訊
docker history d1fd7d86a825
可以看到工作目錄為/etc/docker/registr
Push上傳的檔案都會上這個檔案,因docekr 計算和儲存是分開的所以要永久儲存映象就要把這檔案匯出來永久儲存
然後我們執行registry映象
docker run -d -p 5000:5000 -v /c/Users/docker_registry:/var/lib/registry registry
這裡我們使用了本地掛載,因為我這裡是Windows系統,所以是掛載在docker的Linux系統預設的掛載目錄下,當然你也可以修改此目錄。
那我們來看一下掛載情況吧
docker inspect 20b132ab834b310c5
我們已經成功的掛載了。
推送映象到本地庫
接下來我們就要把本地的映象push到私有倉庫中,我們把balance映象push到私有倉庫中
docker push 192.168.99.100:5000/balance
我們看到第一次push錯誤的時候,是因為缺少tag,當我們tag標籤之後,再次push有出現異常資訊。因為Docker從1.3.X之後,與docker registry互動預設使用的是https,然而此處搭建的私有倉庫只提供http服務,所以當與私有倉庫互動時就會報上面的錯誤。為了解決這個問題需要在啟動docker server時增加啟動引數為預設使用http訪問。
解決方案:
在”/etc/docker/“目錄下,建立”daemon.json“檔案。在檔案中寫入:
如果有這個檔案就在時面加一條
{ "insecure-registries":["192.168.99.100:5000"] }
IP地址為docker 私有倉庫地址
因為我是Windows系統,所以要先連線到docker的執行環境Linux系統
docker-machine ssh default
然後將當前的docker使用者切換到root使用者
sudo -i
儲存檔案
重啟docker容器,再次push映象
已經推送成功了。
驗證
我們來驗證一下,首先將本地所有的balance相關的映象都刪除
我們看到本地已經沒有了balance映象
docker pull 192.168.99.100:5000/balance
我們看到映象已經被拉取下來了,然後在執行一下映象,看看是否能正常訪問
docker run -d -p 8888:8080 fa9b9a86d1ed
專案已經完美執行起來了,棒棒滴!