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