docker使用registry搭建本地私有倉庫

參考連接來自:http://blog.csdn.net/wangtaoking1/article/details/44180901/nginx

和Mavan的管理同樣,Dockers不只提供了一箇中央倉庫,同時也容許咱們使用registry搭建本地私有倉庫。docker

使用私有倉庫有許多優勢:vim

  1. 節省網絡帶寬,針對於每一個鏡像不用每一個人都去中央倉庫上面去下載,只須要從私有倉庫中下載便可;
  2. 提供鏡像資源利用,針對於公司內部使用的鏡像,推送到本地的私有倉庫中,以供公司內部相關人員使用。

接下來咱們就大體說一下如何在本地搭建私有倉庫。安全

目前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/

同時也能夠指定鏡像查詢。

刪除

目前還沒有找到方法刪除私有倉庫中的鏡像,嘗試過直接從倉庫存儲目錄中刪除鏡像文件,可是並不能成功刪除鏡像。

相關文章
相關標籤/搜索