部署Docker Registry并配置認證登錄教程
Docker Registry 需要 Docker 版本高于等于 1.6.0
Registry是一個無狀態(tài)、高度可擴展的服務器側應用程序,用于存儲和允許您分發(fā)Docker鏡像
內網環(huán)境下,可以使用 Docker Registry 來解決k8s集群的鏡像拉取問題,當然,公網情況下, Docker Registry 私密性更高,比共有倉庫更適合
如果需要 Docker Registry 開啟認證功能,可以直接看配置 Docker Registry 認證
搭建 Docker Registry
創(chuàng)建本地映射目錄
這個目錄可以自定義,根據自身實際磁盤空間情況進行創(chuàng)建,將容器內的文件映射到本地,以此來達到持久化的效果
# mkdir /var/lib/registry
啟動 Docker Registry
docker命令中,冒號前面的為本地路徑或端口,冒號后面的為容器內部的路徑或端口
-p:將本地5000端口映射給容器內的5000端口(Docker Registry默認端口),本地端口可以自定義,只要是空閑的端口即可--restart:容器的重啟策略--name:啟動的容器名稱-v:將本地目錄映射到容器內的/var/lib/registry目錄-d:將容器放到后臺運行registry:鏡像名,不加tag,默認拉取latest,如果本地不存在,啟動容器前,會自動拉取
# docker run -p 5000:5000 \ --restart=always \ --name registry \ -v /var/lib/registry:/var/lib/registry \ -d registry
配置 Docker Registry
# vim /etc/docker/daemon.json
注意json語法格式
如果重啟docker失敗,日志有如下輸出,表示daemon.json文件的格式有錯誤,注意最后是否需要加上逗號
unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '"' after object key:value pair
"insecure-registries": ["ip:端口"]
重啟docker
# systemctl daemon-reload # systemctl restart docker
配置 Docker Registry 認證
創(chuàng)建 Docker Registry 認證文件目錄
# mkdir /var/lib/registry_auth
創(chuàng)建 Docker Registry 認證文件
使用 Apache 的 htpasswd 來創(chuàng)建加密文件
# yum install -y httpd-tools # htpasswd -Bbn admin admin > /var/lib/registry_auth/htpasswd
啟動帶認證的 Docker Registry
REGISTRY_AUTH=htpasswd# 以 htpasswd 的方式認證REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm# 注冊認證REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd# 認證的用戶密碼
# docker run -p 5000:5000 \ --restart=always \ --name registry \ -v /var/lib/registry:/var/lib/registry \ -v /var/lib/registry_auth/:/auth/ \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \ -d registry
配置 Docker Registry
# vim /etc/docker/daemon.json
注意json語法格式
如果重啟docker失敗,日志有如下輸出,表示daemon.json文件的格式有錯誤,注意最后是否需要加上逗號
unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '"' after object key:value pair
"insecure-registries": ["ip:端口"]
重啟docker
# systemctl daemon-reload # systemctl restart docker
登錄 Docker Registry
登錄可以是免交互式,也可以是交互式的
docker login -u 用戶名 -p 密碼 ip:端口# 一般不建議使用明文密碼docker login -u 用戶名 -p ip:端口# 不輸入密碼,回車后,使用交互式輸入密碼(輸入的密碼不會顯示)docker login ip:端口# 不輸入密碼和用戶名,回車后,使用交互式輸入用戶名和密碼(輸入的密碼不會顯示)
# docker login ip:端口 Username: admin Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
退出登錄
# docker logout ip:端口
測試 Docker Registry
給鏡像打上 Docker Registry 的倉庫標簽
# docker tag centos:7 ip:端口/centos:7
將新打標簽的鏡像上傳鏡像到倉庫
# docker push ip:端口/centos:7
查看鏡像,可以看到我們上傳的 centos 7 這個鏡像了
# curl ip:端口/v2/_catalog -u admin
Enter host password for user 'admin':
{"repositories":["centos"]}
查看鏡像包含的tag
需要先使用_catalog查看鏡像的名稱
# curl ip:端口/v2/centos/tags/list -u admin
Enter host password for user 'admin':
{"name":"centos","tags":["8","7","7.1"]}
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Docker Compose 與 Harbor 私有倉庫詳解
本文將探討Docker Compose多容器編排工具與Harbor企業(yè)級私有倉庫的核心技術,幫助讀者掌握從容器管理到鏡像安全存儲的完整解決方案,感興趣的朋友一起看看吧2025-06-06
Docker容器內無法解析域名:Temporary?failure?in?name?resolution
本文主要介紹了Docker容器內無法解析域名:Temporary?failure?in?name?resolution,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2026-04-04

