Docker Registry搭建與使用詳解
有時候使用 Docker Hub 這樣的公共倉庫可能不方便,用戶可以創(chuàng)建一個本地倉庫供私人使用。
簡介
概念
Docker Registry 是一個無狀態(tài),高度可擴(kuò)展的服務(wù)器端應(yīng)用程序,它存儲并允許您分發(fā)Docker映像。
為什么使用
如果要執(zhí)行以下操作,則應(yīng)使用注冊表:
- 嚴(yán)格控制圖像的存儲位置
- 完全擁有您的圖像分發(fā)管道
- 像存儲和分發(fā)緊密集成到您的內(nèi)部開發(fā)工作流程中
Docker Registry搭建
啟動注冊表
docker run -d -p 5000:5000 --name registry registry:2
這將使用官方的 registry 鏡像來啟動私有倉庫。
默認(rèn)情況下,倉庫會被創(chuàng)建在容器的 /var/lib/registry 目錄下。
你可以通過 -v 參數(shù)來將鏡像文件存放在本地的指定路徑。
例如下面的例子將上傳的鏡像放到本地的 /usr/local/registry 目錄。
$ docker run -d \ -p 5000:5000 \ -v /usr/local/registry:/var/lib/registry \ registry
如圖:
在私有倉庫上傳、搜索、下載鏡像
創(chuàng)建好私有倉庫之后,就可以使用 docker tag 來標(biāo)記一個鏡像,然后推送它到倉庫。例如私有倉庫地址為 127.0.0.1:5000
先在本機(jī)查看已有的鏡像
docker image ls
鏡像標(biāo)記
docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]。
鏡像上傳
docker push 127.0.0.1:5000/鏡像文件
用 curl 查看倉庫中的鏡像。
這里可以看到 {“repositories”:[“test”]},表明鏡像已經(jīng)被成功上傳了。
使用Registry
接下來我們將本地的鏡像刪除掉,在從Registry下載
刪除
docker rmi 127.0.0.1:5000/test:v1.0
下載
通過上面的刪除我們本地已經(jīng)沒有了127.0.0.1:5000/test
Registry Web UI
來自大佬搭建過程,驗(yàn)證可用
搜索鏡像
docker search dockerfly
下載鏡像
根據(jù)鏡像使用排名(一般情況下拉取使用率最高的鏡像名),我這里使用的是阿里云鏡像地址
docker pull registry.cn-hangzhou.aliyuncs.com/voovan/dockerfly:20170227
打tag
查看鏡像是否拉取成功(鏡像名太長,打了tag)
docker tag registry.cn-hangzhou.aliyuncs.com/voovan/dockerfly:20170227 dockerfly
啟動鏡像(鏡像-容器-運(yùn)行)
docker run --name dockerfly --restart=always -d -v /var/run/docker.sock:/var/run/docker.sock -p 2735:2735 -p 28083:28083 dockerfly
瀏覽器訪問 http://dockerserviceip:28083
這是就可以看到我們所以鏡像的狀態(tài)
注意事項(xiàng)
如果你不想使用 127.0.0.1:5000 作為倉庫地址,比如想讓本網(wǎng)段的其他主機(jī)也能把鏡像推送到私有倉庫。你就得把例如 192.168.100.100:5000 這樣的內(nèi)網(wǎng)地址作為私有倉庫地址,這時你會發(fā)現(xiàn)無法成功推送鏡像。
這是因?yàn)?Docker 默認(rèn)不允許非 HTTPS 方式推送鏡像。我們可以通過 Docker 的配置選項(xiàng)來取消這個限制,或者查看下一節(jié)配置能夠通過 HTTPS 訪問的私有倉庫
Ubuntu 14.04, Debian 7 Wheezy
對于使用 upstart 的系統(tǒng)而言,編輯 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中增加如下內(nèi)容:
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registries=192.168.199.100:5000"
重新啟動服務(wù)。
$ sudo service docker restart
Ubuntu 16.04+, Debian 8+, centos 7
對于使用 systemd 的系統(tǒng),請?jiān)?/etc/docker/daemon.json 中寫入如下內(nèi)容(如果文件不存在請新建該文件)
{ "registry-mirrors": [ "https://registry.docker-cn.com" ], "insecure-registries": [ "192.168.199.100:5000" ] }
注意:該文件必須符合 json 規(guī)范,否則 Docker 將不能啟動
其他
對于 Docker for Windows 、 Docker for Mac 在設(shè)置中編輯 daemon.json 增加和上邊一樣的字符串即可。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
再見 Docker如何5分鐘轉(zhuǎn)型 containerd
這篇文章主要介紹了再見 Docker如何5分鐘轉(zhuǎn)型 containerd,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03詳解基于docker 如何部署surging分布式微服務(wù)引擎
這篇文章主要介紹了詳解基于docker 如何部署surging分布式微服務(wù)引擎,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06docker快速安裝Es和kibana的實(shí)現(xiàn)步驟
在工作過程中,經(jīng)常需要測試環(huán)境搭建Es環(huán)境,本文主要介紹了docker快速安裝Es和kibana,具有一定的參考價值,感興趣的可以了解一下2024-03-03