關于registry
官方的Docker hub是一個用于管理公共鏡像的好地方,我們可以在上面找到我們想要的鏡像,也可以把我們自己的鏡像推送上去。但有時我們需要擁有一個私有的鏡像倉庫用于管理我們自己的鏡像。此時可以通過開源軟件registry來達成目的。官方在Docker hub上提供了registry的鏡像(詳情),我們可以直接使用該registry鏡像來構建一個容器,搭建我們自己的私有倉庫服務。
registry部署搭建
- 下載registry鏡像,此處我們拉取的版本為當前最新的2.6.1
docker pull registry:2.6.1
- 根據下載的鏡像創建并運行一個容器
docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry --name registry registry:2.6.1
-p選項用于將宿主機的端口映射到容器的端口,這樣就可以通過宿主機的地址訪問容器服務
-v選項用于將宿主機的目錄掛在到容器的目錄,便于直接在宿主機上查看上傳的鏡像 - 訪問
http://127.0.0.1:5000/v2
,出現以下結果則說明registry服務已啟動成功
Paste_Image.png
上傳鏡像到私有倉庫
我的機器上有一個從官方下載的postgresql:9.6.2的鏡像,現在將其發布到私有倉庫中
- 通過docker tag將該鏡像標志為要推送到私有倉庫
docker tag 鏡像名[:標簽] 鏡像倉庫服務器地址/命名空間/鏡像發布名:發布標簽
, - 運行docker push將鏡像push到我們的私有倉庫中
docker push 鏡像倉庫服務器地址/命名空間/鏡像發布名:發布標簽
本例中,我們操作如下
docker tag postgresql:9.6.2 127.0.0.1:5000/firefly/postgresql:9.6.2
docker push 127.0.0.1:5000/firefly/postgresql:9.6.2
然后在/data/registry/docker/registry/v2/repositories下看到以命名空間名firefly命名的文件夾,上傳的鏡像即位于該目錄下
刪除已經push到本地倉庫的鏡像。。。
- 打開鏡像的存儲目錄,如有-v操作打開掛載目錄也可以,刪除鏡像文件夾
docker exec <容器名> rm -rf /var/lib/registry/docker/registry/v2/repositories/<鏡像名>
- 執行垃圾回收操作,注意2.4版本以上的registry才有此功能
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml