日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

docker?registry?私有倉庫的搭建過程_docker

作者:莊小焱 ? 更新時間: 2022-03-26 編程語言

摘要

隨著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服務(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

三、上傳與下載鏡像

# 給鏡像打標簽
 
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"

博文參考

https://www.jb51.net/article/187864.htm

安裝docker registry - MartinEDM

原文鏈接:https://blog.csdn.net/weixin_41605937/article/details/122367707

欄目分類
最近更新