詳解Docker私有倉(cāng)庫(kù)Registry的搭建驗(yàn)證
1. 關(guān)于Registry
官方的Docker hub是一個(gè)用于管理公共鏡像的好地方,我們可以在上面找到我們想要的鏡像,也可以把我們自己的鏡像推送上去。但是,有時(shí)候,我們的使用場(chǎng)景需要我們擁有一個(gè)私有的鏡像倉(cāng)庫(kù)用于管理我們自己的鏡像。這個(gè)可以通過(guò)開(kāi)源軟件Registry來(lái)達(dá)成目的。
Registry在github上有兩份代碼:老代碼庫(kù)和新代碼庫(kù)。老代碼是采用python編寫(xiě)的,存在pull和push的性能問(wèn)題,出到0.9.1版本之后就標(biāo)志為deprecated,不再繼續(xù)開(kāi)發(fā)。從2.0版本開(kāi)始就到在新代碼庫(kù)進(jìn)行開(kāi)發(fā),新代碼庫(kù)是采用go語(yǔ)言編寫(xiě),修改了鏡像id的生成算法、registry上鏡像的保存結(jié)構(gòu),大大優(yōu)化了pull和push鏡像的效率。
官方在Docker hub上提供了registry的鏡像(詳情),我們可以直接使用該registry鏡像來(lái)構(gòu)建一個(gè)容器,搭建我們自己的私有倉(cāng)庫(kù)服務(wù)。Tag為latest的registry鏡像是0.9.1版本的,我們直接采用2.1.1版本。
2. Registry的部署
運(yùn)行下面命令獲取registry鏡像,
$ sudo docker pull registry:2.1.1
然后啟動(dòng)一個(gè)容器,
$ sudo docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.1.1
Registry服務(wù)默認(rèn)會(huì)將上傳的鏡像保存在容器的/var/lib/registry,我們將主機(jī)的/opt/registry目錄掛載到該目錄,即可實(shí)現(xiàn)將鏡像保存到主機(jī)的/opt/registry目錄了。
運(yùn)行docker ps看一下容器情況,
lienhua34@lienhua34-Compaq-Presario-CQ35-Notebook-PC ~ $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f3766397a458 registry:2.1.1 "/bin/registry /etc/d" 46 seconds ago Up 45 seconds 0.0.0.0:5000->5000/tcp registry
說(shuō)明我們已經(jīng)啟動(dòng)了registry服務(wù),打開(kāi)瀏覽器輸入http://127.0.0.1:5000/v2,出現(xiàn)下面情況說(shuō)明registry運(yùn)行正常,
3. 驗(yàn)證
現(xiàn)在我們通過(guò)將鏡像push到registry來(lái)驗(yàn)證一下。
我的機(jī)器上有個(gè)hello-world的鏡像,我們要通過(guò)docker tag將該鏡像標(biāo)志為要推送到私有倉(cāng)庫(kù),
$ sudo docker tag hello-world 127.0.0.1:5000/hello-world
然后查看以下本地的鏡像,
lienhua34@lienhua34-Compaq-Presario-CQ35-Notebook-PC ~ $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry 2.1.1 b91f745cd233 5 days ago 220.1 MB ubuntu 14.04 a5a467fddcb8 6 days ago 187.9 MB hello-world latest 975b84d108f1 2 weeks ago 960 B 127.0.0.1:5000/hello-world latest 975b84d108f1 2 weeks ago 960 B
接下來(lái),我們運(yùn)行docker push將hello-world鏡像push到我們的私有倉(cāng)庫(kù)中,
lienhua34@lienhua34-Compaq-Presario-CQ35-Notebook-PC ~ $ sudo docker push 127.0.0.1:5000/hello-world The push refers to a repository [127.0.0.1:5000/hello-world] (len: 1) 975b84d108f1: Image successfully pushed 3f12c794407e: Image successfully pushed latest: digest: sha256:1c7adb1ac65df0bebb40cd4a84533f787148b102684b74cb27a1982967008e4b size: 2744
現(xiàn)在我們可以查看我們本地/opt/registry目錄下已經(jīng)有了剛推送上來(lái)的hello-world。我們也在瀏覽器中輸入http://127.0.0.1:5000/v2/_catalog,如下圖所示,
現(xiàn)在我們可以先將我們本地的127.0.0.1:5000/hello-world和hello-world先刪除掉,
$ sudo docker rmi hello-world $ sudo docker rmi 127.0.0.1:5000/hello-world
然后使用docker pull從我們的私有倉(cāng)庫(kù)中獲取hello-world鏡像,
lienhua34@lienhua34-Compaq-Presario-CQ35-Notebook-PC ~ $ sudo docker pull 127.0.0.1:5000/hello-world Using default tag: latest latest: Pulling from hello-world b901d36b6f2f: Pull complete 0a6ba66e537a: Pull complete Digest: sha256:1c7adb1ac65df0bebb40cd4a84533f787148b102684b74cb27a1982967008e4b Status: Downloaded newer image for 127.0.0.1:5000/hello-world:latest lienhua34@lienhua34-Compaq-Presario-CQ35-Notebook-PC ~ $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry 2.1.1 b91f745cd233 5 days ago 220.1 MB ubuntu 14.04 a5a467fddcb8 6 days ago 187.9 MB 127.0.0.1:5000/hello-world latest 0a6ba66e537a 2 weeks ago 960 B
4. 可能問(wèn)題
可能會(huì)出現(xiàn)無(wú)法push鏡像到私有倉(cāng)庫(kù)的問(wèn)題。這是因?yàn)槲覀儐?dòng)的registry服務(wù)不是安全可信賴的。這是我們需要修改docker的配置文件/etc/default/docker,添加下面的內(nèi)容,
DOCKER_OPTS="--insecure-registry xxx.xxx.xxx.xxx:5000"
然后重啟docker后臺(tái)進(jìn)程,
$ sudo service docker restart
這是再push即可。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Docker搭建本地私有倉(cāng)庫(kù)的詳細(xì)步驟
- Docker Registry 私有倉(cāng)庫(kù)搭建詳細(xì)步驟
- 詳解docker私有倉(cāng)庫(kù)搭建與使用實(shí)戰(zhàn)
- 詳解Docker私有倉(cāng)庫(kù)最簡(jiǎn)便的搭建方法
- Docker 搭建私有倉(cāng)庫(kù)(registry、harbor)
- Centos 7中Docker私有倉(cāng)庫(kù)的搭建方法
- 搭建Docker私有倉(cāng)庫(kù)(自簽名方式)
- Docker搭建私有倉(cāng)庫(kù)(registry與Harbor)的實(shí)現(xiàn)
- docker私有倉(cāng)庫(kù)的搭建和使用詳解
- 如何搭建配置Docker私有倉(cāng)庫(kù)的實(shí)現(xiàn)步驟
相關(guān)文章
Docker鏡像用普通用戶啟動(dòng)服務(wù)的實(shí)現(xiàn)
使用普通用戶啟動(dòng)Docker容器中的服務(wù),可以有效降低潛在的安全風(fēng)險(xiǎn),本文主要介紹了Docker鏡像用普通用戶啟動(dòng)服務(wù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07Docker network自定義網(wǎng)絡(luò)方式
這篇文章主要介紹了Docker network自定義網(wǎng)絡(luò)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05在Docker容器中使用iptables時(shí)的最小權(quán)限的開(kāi)啟方法
這篇文章主要介紹了在Docker容器中使用iptables時(shí)的最小權(quán)限的開(kāi)啟方法的相關(guān)資料,需要的朋友可以參考下2017-01-01docker 打包本地鏡像,并到其他機(jī)器進(jìn)行恢復(fù)操作
這篇文章主要介紹了docker 打包本地鏡像,并到其他機(jī)器進(jìn)行恢復(fù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Jenkins整合Docker實(shí)現(xiàn)CICD自動(dòng)化部署的詳細(xì)過(guò)程(若依項(xiàng)目)
本文介紹了如何使用Jenkins和Docker實(shí)現(xiàn)CI/CD自動(dòng)化部署,文章介紹了環(huán)境準(zhǔn)備,包括Jenkins、Docker、JDK、Node和Maven,然后討論了如何配置GitLab環(huán)境并利用Webhooks實(shí)現(xiàn)代碼的自動(dòng)拉取和部署,最后,展示了如何部署前后端分離的項(xiàng)目,并通過(guò)實(shí)際操作驗(yàn)證了整個(gè)流程的有效性2024-10-10docker發(fā)布sunnyNgrok實(shí)現(xiàn)內(nèi)外網(wǎng)穿透的方法(容器內(nèi)執(zhí)行命令)
這篇文章主要介紹了docker上發(fā)布 sunnyNgrok 實(shí)現(xiàn)內(nèi)外網(wǎng)穿透,容器內(nèi)執(zhí)行命令,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03輕松安裝docker并運(yùn)行docker swarm模式
這篇文章主要介紹了安裝docker并運(yùn)行docker swarm模式的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友一起學(xué)習(xí)吧2016-12-12