docker搭建本地私有倉庫的實(shí)現(xiàn)
有時(shí)候使用Docker Hub這樣的公共倉庫可能不方便,這種情況下用戶可以使用registry創(chuàng)建一個(gè)本地倉庫供私人使用,這點(diǎn)跟Maven的管理類似。
使用私有倉庫有許多優(yōu)點(diǎn):
1)節(jié)省網(wǎng)絡(luò)帶寬,針對(duì)于每個(gè)鏡像不用每個(gè)人都去中央倉庫上面去下載,只需要從私有倉庫中下載即可;
2)提供鏡像資源利用,針對(duì)于公司內(nèi)部使用的鏡像,推送到本地的私有倉庫中,以供公司內(nèi)部相關(guān)人員使用。
1、首先下載registry 鏡像
docker pull registry
Docker 官方提供了一個(gè)搭建私有倉庫的鏡像 registry (注冊(cè)服務(wù)器),只需把鏡像下載下來,運(yùn)行容器并暴露5000端口,就可以使用了
目前Docker Registry已經(jīng)升級(jí)到了v2,最新版的Docker已不再支持v1。Registry v2使用Go語言編寫,在性能和安全性上做了很多優(yōu)化,重新設(shè)計(jì)了鏡像的存儲(chǔ)格式。如果需要安裝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"], #添加,注意用逗號(hào)結(jié)尾 "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"] } systemctl restart docker.service
3、運(yùn)行 registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
-itd: 在容器中打開一個(gè)偽終端進(jìn)行交互操作,并在后臺(tái)運(yùn)行
-v: 把宿主機(jī)的/data/registry目錄綁定到容器/var/lib/registry目錄(這個(gè)目錄是registry容器中存放鏡像文件的目錄),來實(shí)現(xiàn)數(shù)據(jù)的持久化;
在容器中啟動(dòng)私有鏡像倉庫并將私有倉庫的存儲(chǔ)目錄掛載到宿主機(jī)指定目錄中,這樣做的目的是,如果容器被刪除了,存儲(chǔ)在容器中的鏡像就不會(huì)被刪掉(默認(rèn)情況下如果容器被刪除,則存放于容器中的鏡像也會(huì)丟失
)
-p:映射端口;訪問宿主機(jī)的5000端口就訪問到registry容器的服務(wù)了
--restart=always: 這是重啟的策略,在容器退出時(shí)總是重啟容器
--name registry: 創(chuàng)建容器命名為registry
registry:latest:這個(gè)是剛才pull下來的鏡像
Docker容器的重啟策略如下:
no:默認(rèn)策略,在容器退出時(shí)不重啟容器
on-failure: 在容器非正常退出時(shí)(退出狀態(tài)非0),才會(huì)重啟容器
on-failure:3 :在容器非正常退出時(shí)重啟容器,最多重啟3次
always: 在容器退出時(shí)總是重啟容器
unless-stopped: 在容器退出時(shí)總是重啟容器,但是不考慮在Docker守護(hù)進(jìn)程啟動(dòng)時(shí)就已經(jīng)停止了的容器
4、為鏡像打標(biāo)簽
docker tag centos:7 192.168.2.200:5000/centos:v1
如果不對(duì)私有倉庫命名的話,默認(rèn)走的是公共倉庫(docker hub),所以需要命名鏡像。
私有倉庫鏡像的命名規(guī)則:宿主機(jī)ip地址:端口號(hào)/xxxx(需要更改的名稱)
注意:當(dāng)你對(duì)源鏡像進(jìn)行命名后,命名后的鏡像名稱也視為一個(gè)標(biāo)簽,因?yàn)閕d號(hào)是相同的。如果當(dāng)源鏡像刪除,命名后的鏡像依然會(huì)存在,因?yàn)閯h除的是一個(gè)標(biāo)簽?! ?/p>
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搭建本地私有倉庫的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)docker搭建私有倉庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker容器啟動(dòng)設(shè)置固定IP的實(shí)現(xiàn)
本文主要介紹了docker容器啟動(dòng)設(shè)置固定IP的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12修改Docker容器內(nèi)文件的三種實(shí)現(xiàn)方式
這篇文章主要介紹了修改Docker容器內(nèi)文件的三種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08Jenkins Pipeline中Docker鏡像構(gòu)建與推送的常見問題及解決方案
在現(xiàn)代 DevOps 實(shí)踐中,Jenkins 作為一款流行的持續(xù)集成和持續(xù)交付(CI/CD)工具,被廣泛應(yīng)用于自動(dòng)化構(gòu)建、測試和部署流程,然而,在實(shí)際使用 Jenkins Pipeline 進(jìn)行 Docker 鏡像構(gòu)建和推送的過程中,可能會(huì)遇到各種問題,本文將通過一個(gè)具體的案例給大家詳細(xì)的介紹一下2025-01-01Dockerfile構(gòu)建Redis鏡像的方法實(shí)現(xiàn)(yum方式)
本文主要介紹了Dockerfile構(gòu)建Redis鏡像的方法實(shí)現(xiàn)(yum方式),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08dockerfile結(jié)合go應(yīng)用程序的簡單應(yīng)用代碼示例
Dockerfile文件是一個(gè)包含了指令和參數(shù)的文本文件,用于自動(dòng)化構(gòu)建Docker鏡像,這篇文章主要給大家介紹了關(guān)于dockerfile結(jié)合go應(yīng)用程序的簡單應(yīng)用,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03docker實(shí)現(xiàn)導(dǎo)出、導(dǎo)入和數(shù)據(jù)搬遷
本篇文章主要介紹了docker實(shí)現(xiàn)導(dǎo)出、導(dǎo)入和數(shù)據(jù)搬遷,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07Docker如何使用nginx搭建tomcat集群(圖文詳解)
這篇文章主要介紹了Docker使用nginx搭建tomcat集群的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12