參考連接來自:http://blog.csdn.net/wangtaoking1/article/details/44180901/nginx
和Mavan的管理同樣,Dockers不只提供了一箇中央倉庫,同時也容許咱們使用registry搭建本地私有倉庫。docker
使用私有倉庫有許多優勢:vim
接下來咱們就大體說一下如何在本地搭建私有倉庫。安全
目前Docker Registry已經升級到了v2,最新版的docker已再也不支持v1。Registry v2使用Go語言編寫,在性能和安全性上作了不少優化,從新設計了鏡像的存儲格式。此文檔是在v1的基礎上寫的,若是須要安裝registry v2,只需下載registry:2.2便可,或者能夠下載後面的安裝腳本運行安裝。服務器
環境準備:網絡
環境:兩個裝有Docker的CentOS 7.2 虛擬機性能
服務器1:192.168.68.14 ------用戶開發機測試
服務器2:192.168.68.25 ------用做私有倉庫優化
此處咱們準備了兩個虛擬機,分別都安裝了Docker,其中14機器用做開發機,25機器用做registry私有倉庫機器。環境準備好以後接下來咱們就開始搭建私有鏡像倉庫。加密
首先在25機器上下載registry鏡像
$ 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
能夠看到咱們啓動了一個容器,地址爲:192.168.68.25:5000。
接下來咱們就要操做把一個本地鏡像push到私有倉庫中。首先在25機器下pull一個比較小的鏡像來測試(此處使用的是busybox)。
$ sudo docker pull busybox
接下來修改一下該鏡像的tag。
$ sudo docker tag busybox 192.168.112.136:5000/busybox
接下來把打了tag的鏡像上傳到私有倉庫。
$ sudo docker push 192.168.68.25:5000/busybox
有報錯,以下圖:
由於Docker從1.3.X以後,與docker registry交互默認使用的是https,然而此處搭建的私有倉庫只提供http服務,因此當與私有倉庫交互時就會報上面的錯誤。爲了解決這個問題須要在啓動docker server時增長啓動參數爲默認使用http訪問。修改docker啓動配置文件(此處是修改25機器的配置)Centos7下配置文件地址爲:/etc/sysconfig/docker,在其中增長--insecure-registry 192.168.68.25:5000以下所示:
$ vim /etc/sysconfig/docker
修改完以後,重啓Docker服務。
$ service docker restart
重啓完以後咱們再次運行推送命令,把本地鏡像推送到私有服務器上。
$ docker push 192.168.68.25:5000/busybox
發現推送失敗,報錯以下:
解決思路:查看registry容器是否啓動,docker ps 發現真沒有啓動,由於剛剛重啓了docker服務,而後這個容器沒有加到隨docker啓動而啓動
步驟:docker start registry
再次推送:docker push 192.168.68.25:5000/busybox
成功如圖:
能夠看到鏡像已經push到私有倉庫中去了。
接下來咱們刪除本地鏡像,而後從私有倉庫中pull下來該鏡像。
docker rmi 192.168.68.25:5000/busybox
docker pull 192.168.68.25:5000/busybox
到此就搭建好了Docker私有倉庫。上面搭建的倉庫是不須要認證的,咱們能夠結合nginx和https實現認證和加密功能。
若是咱們想要查詢私有倉庫中的全部鏡像,使用docker search
命令:
# docker search registry_ip:5000/
若是要查詢倉庫中指定帳戶下的鏡像,則使用以下命令:
# docker search registry_ip:5000/account/
同時也能夠指定鏡像查詢。
目前還沒有找到方法刪除私有倉庫中的鏡像,嘗試過直接從倉庫存儲目錄中刪除鏡像文件,可是並不能成功刪除鏡像。