docker搭建本地私有倉庫的實現(xiàn)
有時候使用Docker Hub這樣的公共倉庫可能不方便,這種情況下用戶可以使用registry創(chuàng)建一個本地倉庫供私人使用,這點跟Maven的管理類似。
使用私有倉庫有許多優(yōu)點:
1)節(jié)省網(wǎng)絡(luò)帶寬,針對于每個鏡像不用每個人都去中央倉庫上面去下載,只需要從私有倉庫中下載即可;
2)提供鏡像資源利用,針對于公司內(nèi)部使用的鏡像,推送到本地的私有倉庫中,以供公司內(nèi)部相關(guān)人員使用。
1、首先下載registry 鏡像
docker pull registry
Docker 官方提供了一個搭建私有倉庫的鏡像 registry (注冊服務(wù)器),只需把鏡像下載下來,運行容器并暴露5000端口,就可以使用了
目前Docker Registry已經(jīng)升級到了v2,最新版的Docker已不再支持v1。Registry v2使用Go語言編寫,在性能和安全性上做了很多優(yōu)化,重新設(shè)計了鏡像的存儲格式。如果需要安裝registry v2,只需下載registry:2.2即可。Docker官方提供的工具docker-registry可以用于構(gòu)建私有的鏡像倉庫

2、在daemon.json文件中添加私有鏡像倉庫地址
vim /etc/ docker/daemon.json
{
"insecure-registries": ["192.168.2.200:5000"],
#添加,注意用逗號結(jié)尾
"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"]
}
systemctl restart docker.service

3、運行 registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
-itd: 在容器中打開一個偽終端進(jìn)行交互操作,并在后臺運行
-v: 把宿主機(jī)的/data/registry目錄綁定到容器/var/lib/registry目錄(這個目錄是registry容器中存放鏡像文件的目錄),來實現(xiàn)數(shù)據(jù)的持久化;
在容器中啟動私有鏡像倉庫并將私有倉庫的存儲目錄掛載到宿主機(jī)指定目錄中,這樣做的目的是,如果容器被刪除了,存儲在容器中的鏡像就不會被刪掉(默認(rèn)情況下如果容器被刪除,則存放于容器中的鏡像也會丟失)
-p:映射端口;訪問宿主機(jī)的5000端口就訪問到registry容器的服務(wù)了
--restart=always: 這是重啟的策略,在容器退出時總是重啟容器
--name registry: 創(chuàng)建容器命名為registry
registry:latest:這個是剛才pull下來的鏡像
Docker容器的重啟策略如下:
no:默認(rèn)策略,在容器退出時不重啟容器
on-failure: 在容器非正常退出時(退出狀態(tài)非0),才會重啟容器
on-failure:3 :在容器非正常退出時重啟容器,最多重啟3次
always: 在容器退出時總是重啟容器
unless-stopped: 在容器退出時總是重啟容器,但是不考慮在Docker守護(hù)進(jìn)程啟動時就已經(jīng)停止了的容器

4、為鏡像打標(biāo)簽
docker tag centos:7 192.168.2.200:5000/centos:v1
如果不對私有倉庫命名的話,默認(rèn)走的是公共倉庫(docker hub),所以需要命名鏡像。
私有倉庫鏡像的命名規(guī)則:宿主機(jī)ip地址:端口號/xxxx(需要更改的名稱)
注意:當(dāng)你對源鏡像進(jìn)行命名后,命名后的鏡像名稱也視為一個標(biāo)簽,因為id號是相同的。如果當(dāng)源鏡像刪除,命名后的鏡像依然會存在,因為刪除的是一個標(biāo)簽。

5、上傳到私有倉庫
docker push 192.168.2.200:5000/centos:v1

6、列出私有倉庫的所有鏡像
curl http://192.168.2.200:5000/v2/_catalog

7、列出私有倉庫的centos鏡像有哪些tag
curl http://192.168.2.200:5000/v2/centos/tags/list

8、先刪除原有的centos的鏡像,再測試私有倉庫下載
docker rmi -f 8652b9f0cb4c docker pull 192.168.2.200:5000/centos:v1

到此這篇關(guān)于docker搭建本地私有倉庫的實現(xiàn)的文章就介紹到這了,更多相關(guān)docker搭建私有倉庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker部署nginx及nginx.conf文件配置方式
這篇文章主要介紹了docker部署nginx及nginx.conf文件配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
Rocky Linux 9.2下使用dnf安裝Docker全流程指南
Docker 是當(dāng)前最流行的容器化平臺,本文以 Rocky Linux 9.2 為例,詳細(xì)介紹如何使用 dnf 命令安裝 Docker,完成配置并進(jìn)行基礎(chǔ)使用,希望對大家有所幫助2025-08-08
Docker安裝Maven私服Nexus3的實現(xiàn)步驟
本文主要介紹了Docker安裝Maven私服Nexus3的實現(xiàn)步驟,可以幫助開發(fā)者搭建高效的依賴管理和分發(fā)環(huán)境,具有一定的參考價值,感興趣的可以了解一下2025-12-12
使用Docker部署IntelliJ IDEA(linuxserver/intellij-idea)的完整指南
在服務(wù)器或無界面 Linux 環(huán)境中使用 IntelliJ IDEA 一直是個痛點,借助 Docker + linuxserver/intellij-idea 鏡像,我們可以非常方便地通過瀏覽器遠(yuǎn)程使用 IDEA,下面我們就來看看詳細(xì)部署指南吧2025-12-12
Docker啟動PostgreSQL時創(chuàng)建多個數(shù)據(jù)庫的解決方案
這篇文章主要介紹了Docker啟動PostgreSQL時創(chuàng)建多個數(shù)據(jù)庫的解決方案,重點給大家介紹如何把shell/sql腳本放入/docker-entrypoint-initdb.d/目錄中,讓容器啟動的時候自動執(zhí)行創(chuàng)建2021-06-06
Docker為網(wǎng)絡(luò)bridge模式指定容器ip的方法
Docker在創(chuàng)建容器時有四種網(wǎng)絡(luò)模式,bridge為默認(rèn)不需要用--net去指定,其他三種模式需要在創(chuàng)建容器時使用--net去指定。那Docker為網(wǎng)絡(luò)bridge模式指定容器ip該如何實現(xiàn)呢?下面通過通過這篇文章一起看看吧,文中給出了詳細(xì)的示例代碼,有需要的可以參考借鑒。2016-11-11

