Centos 7上Docker私有倉庫Registry實戰

1. 關於Registry

官方的Docker hub是一個用於管理公共鏡像的好地方,咱們能夠在上面找到咱們想要的鏡像,也能夠把咱們本身的鏡像推送上去。可是,有時候,咱們的使用場景須要咱們擁有一個私有的鏡像倉庫用於管理咱們本身的鏡像。這個能夠經過開源軟件Registry來達成目的。python

 Registrygithub上有兩份代碼:老代碼庫和新代碼庫。老代碼是採用python編寫的,存在pullpush的性能問題,出到0.9.1版本以後就標誌爲deprecated,再也不繼續開發。從2.0版本開始就到在新代碼庫進行開發,新代碼庫是採用go語言編寫,修改了鏡像id的生成算法、registry上鏡像的保存結構,大大優化了pullpush鏡像的效率。git

 官方在Docker hub上提供了registry的鏡像(詳情),咱們能夠直接使用該registry鏡像來構建一個容器,搭建咱們本身的私有倉庫服務。github

 2. Registry的部署

   1. 運行下面命令獲取registry鏡像算法

      docker pull registrydocker

     下載到的版本默認爲 docker.io/registry            latest  json

 

  2. 將registry鏡像運行並生成一個容器
     run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
     Registry服務默認會將上傳的鏡像保存在容器的/var/lib/registry,將主機的/opt/registry目錄掛載到該目錄,便可實現將鏡像保存到主機的/opt/registry目錄了。瀏覽器

 

  3. 運行docker ps看一下容器運行狀況安全

 

 4.registry容器啓動後,打開瀏覽器輸入http://ip_add:5000/v2/,看到下面狀況說明registry運行正常curl

 

3. 測試上傳鏡像到Registry

   經過將鏡像push到registry來驗證,首先將主機的registry鏡像命名爲符合倉庫要求registry_url:port/dir/name:version的格式,經過docker tag命令來實現命名

   docker tag registry:latset ip_add:5000/registry:latset:latset
性能

   經過命令 docker images 查看本地鏡像

   上傳Registry鏡像到Registry倉庫: docker push ip_add:5000/registry:latset:latset

      注意:

     可能會出現沒法push鏡像到私有倉庫的問題。這是由於咱們啓動的registry服務不是安全可信賴的。這時須要修改docker的配置文件/etc/docker/daemon.json,添加下面的內容

  {"registry-mirrors": ["http://86d2a50b.m.daocloud.io"],"insecure-registries": ["xxx.xxx.xxx.xxx:5000"]}

   "registry-mirrors": ["http://86d2a50b.m.daocloud.io"] 是國內daocloud公司代理的Registry Hub倉庫的地址,能夠加快國內訪問Registry Hub倉庫的速度。修改好以後須要重啓Docker服務才能生效,執行命令:systemctl restart docker ,在push便可。

  push成功以後,查看本地/opt/registry目錄下已經有了剛推送上來的registry鏡像,也能夠在瀏覽器中輸入http://ip_add:5000/v2/_catalog

 

 

   或者使用如下命令查看:

   # curl -XGET http://registry:5000/v2/_catalog

 # curl -XGET http://registry:5000/v2/image_name/tags/list

  至此,咱們的Registry私有倉庫搭建完成,若是在從此中要使用,能夠使用命令:docker pull ip_add:5000/registry:latset 拉取。

相關文章
相關標籤/搜索