1. 程式人生 > >構建docker私有倉庫

構建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

拉取映象成功,