這篇文章主要為大家展示了“Docker私有倉庫Registry如何搭建”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Docker私有倉庫Registry如何搭建”這篇文章吧。
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比余江網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式余江網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋余江地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
官方的Docker hub是一個(gè)用于管理公共鏡像的好地方,我們可以在上面找到我們想要的鏡像,也可以把我們自己的鏡像推送上去。但是,有時(shí)候,我們的使用場(chǎng)景需要我們擁有一個(gè)私有的鏡像倉庫用于管理我們自己的鏡像。這個(gè)可以通過開源軟件Registry來達(dá)成目的。
Registry在github上有兩份代碼:老代碼庫和新代碼庫。老代碼是采用python編寫的,存在pull和push的性能問題,出到0.9.1版本之后就標(biāo)志為deprecated,不再繼續(xù)開發(fā)。從2.0版本開始就到在新代碼庫進(jìn)行開發(fā),新代碼庫是采用go語言編寫,修改了鏡像id的生成算法、registry上鏡像的保存結(jié)構(gòu),大大優(yōu)化了pull和push鏡像的效率。
官方在Docker hub上提供了registry的鏡像(詳情),我們可以直接使用該registry鏡像來構(gòu)建一個(gè)容器,搭建我們自己的私有倉庫服務(wù)。Tag為latest的registry鏡像是0.9.1版本的,我們直接采用2版本。
運(yùn)行下面命令獲取registry鏡像,
$ sudo docker pull registry:2
然后啟動(dòng)一個(gè)容器,
$ sudo docker run -d -v /wks/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2
Registry服務(wù)默認(rèn)會(huì)將上傳的鏡像保存在容器的/var/lib/registry,我們將主機(jī)的/wks/registry目錄掛載到該目錄,即可實(shí)現(xiàn)將鏡像保存到主機(jī)的/wks/registry目錄了。
運(yùn)行docker ps看一下容器情況,
$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f3766397a458 registry:2 "/bin/registry /etc/d" 46 seconds ago Up 45 seconds 0.0.0.0:5000->5000/tcp registry
說明我們已經(jīng)啟動(dòng)了registry服務(wù),打開瀏覽器輸入http://127.0.0.1:5000/v2,出現(xiàn)下面情況說明registry運(yùn)行正常,
現(xiàn)在我們通過將鏡像push到registry來驗(yàn)證一下。
我的機(jī)器上有個(gè)hello-world的鏡像,我們要通過docker tag將該鏡像標(biāo)志為要推送到私有倉庫,
$ sudo docker tag hello-world 127.0.0.1:5000/hello-world
然后查看以下本地的鏡像,
$ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry 2 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 B127.0.0.1:5000/hello-world latest 975b84d108f1 2 weeks ago 960 B
接下來,我們運(yùn)行docker push將hello-world鏡像push到我們的私有倉庫中,
$ 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)在我們可以查看我們本地/wks/registry目錄下已經(jīng)有了剛推送上來的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從我們的私有倉庫中獲取hello-world鏡像,
$ 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 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry 2 b91f745cd233 5 days ago 220.1 MB ubuntu 14.04 a5a467fddcb8 6 days ago 187.9 MB127.0.0.1:5000/hello-world latest 0a6ba66e537a 2 weeks ago 960 B
可能會(huì)出現(xiàn)無法push鏡像到私有倉庫的問題。這是因?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即可。
以上是“Docker私有倉庫Registry如何搭建”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!