1. 程式人生 > >Docker應用--搭建Docker映象的本地倉庫

Docker應用--搭建Docker映象的本地倉庫

Docker的倉庫是DockerHub,類似於GitHub。GitHub有一個開源的軟體叫GitLab。Docker也有一個開源軟體Docker registry。

建立私有倉庫

在私有倉庫主機上下載registry映象。

docker pull registry

預設情況下,倉庫會將映象存放在/var/lib/registry目錄下,這裡指定本地一個目錄掛載到容器內的/var/lib/registry下,如下:

sudo mkdir -pv /opt/data/registry
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry 

此時就會啟動一個registry容器,地址為http://<ip>:5000

測試一下

接下來我們要做的就是把本地的一個映象push到私有倉庫中去,首先在本機上pull一個比較小的映象來做測試(此處使用的是busybox)。

docker pull busybox

接下來修改映象的tag。

docker tag busybox 127.0.0.1:5000/busybox 

接下來將打了tag的映象上傳到私有倉庫中。

docker push 127.0.0.1:5000/busybox

可以看到映象已經push到私有倉庫中去了。
接下來,我們刪除本地映象,然後從私有倉庫pull下來該映象。

docker pull 127.0.0.1/busybox

由此可見,Docker映象的本地倉庫已經搭建成功,並且可以正常使用了。

如何修改預設的映象倉庫

執行docker pull image_NAME 預設都是去官方來拉取。本地已建registry,就是每次得以這種格式拉取:docker pull IP:PORT/image_NAME,很不方便。利用下邊的方法可以實現首先從本地倉庫中查詢,如果本地倉庫中沒有再去官方映象源拉取。

修改配置檔案/etc/default/docker。增加如下內容:

DOCKER_OPTS="--insecure-registry 127.0.0.1:5000"

修改完成後,重啟docker服務即可。

service docker restart

注意:
因為Docker從1.3.X以後,與docker registry互動預設使用的是https,然而此處搭建的私有倉庫只提供http服務,所以當與私有倉庫互動時會報上面的錯誤。為了解決這個問題需要在啟動docker server時增加引數為預設使用http訪問,修改docker啟動的配置檔案。