一、關(guān)于Registry
官方的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ù)。
二、搭建Registry
首先搜索并拉取鏡像
docker search registry # 建議先搜索一下,可以看一下相關(guān)的鏡像,說不定哪天就有更好的鏡像了docker pull registry # 標(biāo)簽可以不加,因?yàn)楫?dāng)前最新就是v2
運(yùn)行一個(gè)registry容器
docker run -d / # 后臺(tái)運(yùn)行--name registry-srv / # 指定容器名--restart=always / # 設(shè)置自動(dòng)啟動(dòng)-p 5000:5000 / # 端口映射宿主機(jī),通過宿主機(jī)地址訪問-v /opt/zwx-registry:/var/lib/registry / # 把鏡像存儲(chǔ)目錄掛載到本地,方便管理和持久化-v /opt/zwx-registry/srv-config.yml:/etc/docker/registry/config.yml / # 把配置文件掛載到本地,方便修改和保存registry
srv-config.yml內(nèi)容如下
標(biāo)紅delete參數(shù)設(shè)置為true,是為了讓倉庫支持刪除功能。默認(rèn)沒有這個(gè)參數(shù),也就是不能刪除倉庫鏡像。
version: 0.1log: fields: service: registrystorage: delete: enabled: true cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registryhttp: addr: :5000 headers: X-Content-Type-Options: [nosniff]health: storagedriver: enabled: true interval: 10s threshold: 3
注冊(cè)https協(xié)議(否則push安全認(rèn)證過不去)
需要通過本地倉庫下載鏡像,均需要配置
vim /etc/docker/daemon.json # 默認(rèn)無此文件,需自行添加,有則追加以下內(nèi)容。{ "insecure-registries":["xx.xx.xx.xx:5000"] } # 指定IP地址或域名systemctl daemon-reload # 守護(hù)進(jìn)程重啟systemctl restart docker # 重啟docker服務(wù)
鏡像上傳與下載
docker push xx.xx.xx.xx:5000/nginx # 一定要注明倉庫地址,否則會(huì)報(bào)錯(cuò)docker pull xx.xx.xx.xx:5000/nginx
查看倉庫鏡像信息
curl -XGET http://xx.xx.xx.xx:5000/v2/_catalog # 查看倉庫鏡像列表(也可以通過windows瀏覽器打開查看)curl -XGET http://xx.xx.xx.xx:5000/v2/image_name/tags/list # 查看指定應(yīng)用鏡像tag
三、搭建Registry web
首先搜索并拉取鏡像
docker search docker-registry-webdocker pull hyper/docker-registry-web # 這個(gè)鏡像用的人較多
運(yùn)行一個(gè)registry web容器
docker run -d / # 后臺(tái)運(yùn)行--name registry-web / # 指定容器名--restart=always / # 設(shè)置自動(dòng)啟動(dòng)-p 8000:8080 / # 端口映射宿主機(jī),通過宿主機(jī)地址訪問-v /opt/zwx-registry/web-config.yml:/etc/config.yml / # 把配置文件掛載到本地,方便修改和保存hyper/docker-registry-web
新聞熱點(diǎn)
疑難解答
圖片精選