docker?registry?私有倉庫的搭建過程
摘要
隨著docker使用的鏡像越來越多,就需要有一個保存鏡像的地方,這就是倉庫。目前常用的兩種倉庫:公共倉庫和私有倉庫。最方便的就是使用公共倉庫上傳和下載,下載公共倉庫的鏡像是不需要注冊的,但是上傳時,是需要注冊的。私有倉庫最常用的就是Registry、Harbor兩種,那接下來詳細介紹如何搭建registry私有倉庫。
一、環(huá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服務-->
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服務支持registry服務-->
vim /etc/docker/daemon.json
{"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"],
"insecure-registries":["192.168.100.10:5000"] <!--添加此行-->
}
<!--重新啟動docker服務-->
systemctl reload docker
docker info




三、上傳與下載鏡像
# 給鏡像打標簽
docker tag mysql 192.168.25.140:5000/mysql
# 上傳的鏡像
docker push 192.168.25.140:5000/mysql
<!--客戶端安裝docker服務,配置鏡像加速-->
<!--配置docker支持registry服務 -->
vim /etc/docker/daemon.json
{"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"],
"insecure-registries":["192.168.100.10:5000"] <!--添加此行-->
}
<!--重新啟動docker服務-->
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 <!--刪除此服務器上的所有容器,接下來重新生成一個需要身份驗證的私有倉庫容器--> 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服務的實現(xiàn)步驟
利用 SSH 協(xié)議可以有效防止遠程管理過程中的信息泄露問題,本文主要介紹了Dockerfile為鏡像添加SSH服務的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下2024-03-03
Docker文件映射實現(xiàn)主機與容器間目錄的雙向映射
本地文件系統(tǒng)和容器中的文件系統(tǒng)之間的交互是一項必不可少的功能,本文主要介紹了Docker文件映射實現(xiàn)主機與容器間目錄的雙向映射,具有一定的參考價值,感興趣的可以了解一下2024-03-03
Linux系統(tǒng)docker部署.net?core3.1的詳細步驟
這篇文章主要介紹了Linux系統(tǒng)docker部署.net?core3.1,文章演示基本的基于docker部署.netcore服務,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-02
gitlab實踐教程使用git config進行相關(guān)的配置操作
今天小編就為大家分享一篇關(guān)于gitlab實踐教程使用git config進行相關(guān)的配置操作,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12

