docker?registry?私有倉庫的搭建過程
摘要
隨著docker使用的鏡像越來越多,就需要有一個保存鏡像的地方,這就是倉庫。目前常用的兩種倉庫:公共倉庫和私有倉庫。最方便的就是使用公共倉庫上傳和下載,下載公共倉庫的鏡像是不需要注冊的,但是上傳時,是需要注冊的。私有倉庫最常用的就是Registry、Harbor兩種,那接下來詳細介紹如何搭建registry私有倉庫。
一、環(huán)境準(zhǔn)備
兩臺CentOS7.4,一臺為Docker私有倉庫;另一臺為Docker客戶端,測試使用;
二、配置registry私有倉庫
# <!--docker宿主機開啟路由功能--> echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf <!--刷新配置--> sysctl -p net.ipv4.ip_forward = 1 <!--配置鏡像加速--> vim /etc/docker/daemon.json <!--添加阿里云加速--> {"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]} <!--重新啟動docker服務(wù)--> systemctl reload docker <!--查找registry鏡像--> docker search registry docker pull registry <!--registry鏡像可以直接先pull下來,也可以不下載,根據(jù)自己情況而定--> docker run -d -p 5000:5000 --name registry --restart=always -v /opt/registry:/var/lib/registry registry <!--查看docker運行的容器--> docker ps <!--查看docker所有鏡像--> docker images <!--配置docker服務(wù)支持registry服務(wù)--> vim /etc/docker/daemon.json {"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"], "insecure-registries":["192.168.100.10:5000"] <!--添加此行--> } <!--重新啟動docker服務(wù)--> systemctl reload docker docker info
三、上傳與下載鏡像
# 給鏡像打標(biāo)簽 docker tag mysql 192.168.25.140:5000/mysql # 上傳的鏡像 docker push 192.168.25.140:5000/mysql <!--客戶端安裝docker服務(wù),配置鏡像加速--> <!--配置docker支持registry服務(wù) --> vim /etc/docker/daemon.json {"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"], "insecure-registries":["192.168.100.10:5000"] <!--添加此行--> } <!--重新啟動docker服務(wù)--> systemctl restart docker <!--客戶端下載私有倉庫中的鏡像--> docker pull 192.168.25.140:5000/mysql docker images <!--查看鏡像是否下載成功-->
四、配置registry加載身份驗證
但是現(xiàn)在存在一個問題,如果這也部署的話企業(yè)內(nèi)部所有人員皆可訪問我們的私有倉庫,為了安全起見,接下來為registry添加一個身份驗證,只有通過了身份驗證才可以上傳或者下載私有倉庫中的鏡像。
<!--安裝加密工具httpd-tools--> yum -y install httpd-tools <!--創(chuàng)建存放驗證密鑰目錄--> mkdir /opt/registry-auth <!--配置registry身份驗證數(shù)據(jù)庫--> <!--"-Bbn”參數(shù)解釋:B強制密碼加密;b在命令中輸入密碼,不提示輸入密碼;n不更新密鑰文件--> htpasswd -Bbn bob pwd@123 > /opt/registry-auth/htpasswd <!--刪除此服務(wù)器上的所有容器,接下來重新生成一個需要身份驗證的私有倉庫容器--> docker run -d -p 5000:5000 --restart=always \ -v /opt/registry-auth/:/auth/ \ -v /opt/registry:/var/lib/registry --name registry-auth -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry <!--重新運行一個支持身份驗證的registry私有鏡像倉庫容器--> docker tag tomcat:latest 192.168.100.10:5000/image/tomcat:1.0 docker push 192.168.100.10:5000/image/tomcat:1.0 <!--測試不通過身份驗證是否可以往私有倉庫上傳鏡像--> <!--提示沒有身份驗證,上傳不了--> no basic auth credentials <!--登錄私有鏡像倉庫,通過身份驗證即可上傳--> docker login 192.168.100.10:5000 Username: bob <!--輸入bob--> Password: <!--輸入密碼--> <!--再次上傳鏡像到私有倉庫--> docker push 192.168.100.10:5000/image/tomcat:1.0 <!--docker客戶端不通過身份驗證直接下載私有倉庫中的鏡像直接被拒絕--> docker pull 192.168.100.10:5000/image/tomcat:1.0 Error response from daemon: Get http://192.168.100.10:5000/v2/image/tomcat/manifests/1.0: no basic auth credentials <!--登錄私有倉庫,通過身份驗證--> docker login 192.168.100.10:5000 Username: bob <!--輸入bob--> Password: <!--輸入密碼--> docker pull 192.168.100.10:5000/image/tomcat:1.0 <!--下載私有倉庫中的鏡像--> <!--查看docker客戶端鏡像--> docker images
五、 docker registry 私有倉庫查詢、刪除
修改tag (以hello-world為例)
拉取鏡像 docker pull hello-world 修改鏡像 docker tag hello-world hub.test.com:5000/hello-world:1.0 上傳、刪除、再下載鏡像,刪除后能下載成功 docker images docker push hub.test.com:5000/hello-world:1.0 docker rmi hub.test.com:5000/hello-world:1.0 docker images docker pull hub.test.com:5000/hello-world:1.0 docker images
查看倉庫鏡像
curl hub.test.com:5000/v2/_catalog
registry開啟刪除
#查看默認配置 docker exec -it registry sh -c 'cat /etc/docker/registry/config.yml' #開啟刪除(添加 delete: enabled: true) docker exec -it registry sh -c "sed -i '/storage:/a\ delete:' /etc/docker/registry/config.yml" docker exec -it registry sh -c "sed -i '/delete:/a\ enabled: true' /etc/docker/registry/config.yml" #重啟 docker restart registry
查詢、刪除鏡像
#查詢鏡像 curl <倉庫地址>/v2/_catalog #查詢鏡像tag(版本) curl <倉庫地址>/v2/<鏡像名>/tags/list #刪除鏡像API curl -I -X DELETE "<倉庫地址>/v2/<鏡像名>/manifests/<鏡像digest_hash>" #獲取鏡像digest_hash curl <倉庫地址>/v2/<鏡像名>/manifests/<tag> \ --header "Accept: application/vnd.docker.distribution.manifest.v2+json"
博文參考
http://www.dbjr.com.cn/article/187864.htm
到此這篇關(guān)于docker registry 私有倉庫的文章就介紹到這了,更多相關(guān)docker registry 私有倉庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Dockerfile為鏡像添加SSH服務(wù)的實現(xiàn)步驟
利用 SSH 協(xié)議可以有效防止遠程管理過程中的信息泄露問題,本文主要介紹了Dockerfile為鏡像添加SSH服務(wù)的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下2024-03-03Docker文件映射實現(xiàn)主機與容器間目錄的雙向映射
本地文件系統(tǒng)和容器中的文件系統(tǒng)之間的交互是一項必不可少的功能,本文主要介紹了Docker文件映射實現(xiàn)主機與容器間目錄的雙向映射,具有一定的參考價值,感興趣的可以了解一下2024-03-03Linux系統(tǒng)docker部署.net?core3.1的詳細步驟
這篇文章主要介紹了Linux系統(tǒng)docker部署.net?core3.1,文章演示基本的基于docker部署.netcore服務(wù),linux系統(tǒng)騰訊云ubuntu,.net?core版本3.1,需要的朋友可以參考下2022-09-09詳解如何用docker安裝laravel開發(fā)環(huán)境
本篇文章主要介紹了詳解如何用docker安裝laravel開發(fā)環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02gitlab實踐教程使用git config進行相關(guān)的配置操作
今天小編就為大家分享一篇關(guān)于gitlab實踐教程使用git config進行相關(guān)的配置操作,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12