您好,登錄后才能下訂單哦!
這篇文章主要介紹了Docker私有倉庫的搭建和界面化管理案例,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
一、關于Registry
官方的Docker hub是一個用于管理公共鏡像的好地方,我們可以在上面找到我們想要的鏡像,也可以把我們自己的鏡像推送上去。
但是有時候我們的使用場景需要我們擁有一個私有的鏡像倉庫用于管理我們自己的鏡像。這個可以通過開源軟件Registry來達成目的。
Registry在github上有兩份代碼:老代碼庫和新代碼庫。老代碼是采用python編寫的,存在pull和push的性能問題,出到0.9.1版本之后就標志為deprecated,不再繼續開發。
從2.0版本開始就到在新代碼庫進行開發,新代碼庫是采用go語言編寫,修改了鏡像id的生成算法、registry上鏡像的保存結構,大大優化了pull和push鏡像的效率。
官方在Docker hub上提供了registry的鏡像,我們可以直接使用該registry鏡像來構建一個容器,搭建我們自己的私有倉庫服務。
二、搭建Registry
首先搜索并拉取鏡像
docker search registry # 建議先搜索一下,可以看一下相關的鏡像,說不定哪天就有更好的鏡像了 docker pull registry # 標簽可以不加,因為當前最新就是v2
運行一個registry容器
docker run -d \ # 后臺運行 --name registry-srv \ # 指定容器名 --restart=always \ # 設置自動啟動 -p 5000:5000 \ # 端口映射宿主機,通過宿主機地址訪問 -v /opt/zwx-registry:/var/lib/registry \ # 把鏡像存儲目錄掛載到本地,方便管理和持久化 -v /opt/zwx-registry/srv-config.yml:/etc/docker/registry/config.yml \ # 把配置文件掛載到本地,方便修改和保存 registry
srv-config.yml內容如下
標紅delete參數設置為true,是為了讓倉庫支持刪除功能。默認沒有這個參數,也就是不能刪除倉庫鏡像。
version: 0.1 log: fields: service: registry storage: delete: enabled: true cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry http: addr: :5000 headers: X-Content-Type-Options: [nosniff] health: storagedriver: enabled: true interval: 10s threshold: 3
注冊https協議(否則push安全認證過不去)
需要通過本地倉庫下載鏡像,均需要配置
vim /etc/docker/daemon.json # 默認無此文件,需自行添加,有則追加以下內容。 { "insecure-registries":["xx.xx.xx.xx:5000"] } # 指定IP地址或域名 systemctl daemon-reload # 守護進程重啟 systemctl restart docker # 重啟docker服務
鏡像上傳與下載
docker push xx.xx.xx.xx:5000/nginx # 一定要注明倉庫地址,否則會報錯 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 # 查看指定應用鏡像tag
三、搭建Registry web
首先搜索并拉取鏡像
docker search docker-registry-web docker pull hyper/docker-registry-web # 這個鏡像用的人較多
運行一個registry web容器
docker run -d \ # 后臺運行 --name registry-web \ # 指定容器名 --restart=always \ # 設置自動啟動 -p 8000:8080 \ # 端口映射宿主機,通過宿主機地址訪問 -v /opt/zwx-registry/web-config.yml:/etc/config.yml \ # 把配置文件掛載到本地,方便修改和保存 hyper/docker-registry-web
web-config.yml文件內容如下
標紅readonly參數設置為false,是為了web頁面可以顯示刪除按鈕。默認是true,只讀狀態,沒有刪除按鈕,只能查看。
registry: # Docker registry url url: http://10.88.77.32:5000/v2 # Docker registry fqdn name: localhost:5000 # To allow image delete, should be false readonly: false auth: # Disable authentication enabled: false
部署完成后,瀏覽器打開倉庫UI地址即可查看到所有應用鏡像
選擇任意應用鏡像庫,即可查看到該鏡像的所有tag信息,每個tag后面都有個刪除按鈕(默認沒有,配置參考config.yml)
四、快捷部署
集群模式可以通過docker stack快速部署registry和registry web。
新建配置文件srv-config.yml、web-config.yml放到指定路徑,再新建docker-compose.yml文件,執行命令即可。
docker stack deploy -c docker-compose.yml RGT
version: '3.7' # docker stack 需要是3.0以上版本 services: registry-srv: # 服務名 image: registry ports: # 映射端口 - 5000:5000 volumes: # 掛載鏡像路徑和配置文件,注意修改路徑與實際一致 - /opt/zwx-registry:/var/lib/registry - /opt/zwx-registry/srv-config.yml:/etc/docker/registry/config.yml deploy: # 設置單任務,并約束主節點運行 mode: replicated replicas: 1 placement: constraints: - node.role == manager registry-web: # 服務名 image: hyper/docker-registry-web ports: # 映射端口 - 8000:8080 volumes: # 掛載配置文件,注意修改路徑與實際一致 - /opt/zwx-registry/web-config.yml:/conf/config.yml environment: - REGISTRY_URL=http://registry-srv:5000/v2 - REGISTRY_NAME=localhost:5000 deploy: # 設置單任務,并約束主節點運行 mode: replicated replicas: 1 placement: constraints: - node.role == manager
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Docker私有倉庫的搭建和界面化管理案例”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。