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啟動的配置檔案。