Docker?Registry?使用和部署方式
更新時間:2025年10月10日 08:39:57 作者:香吧香
Docker Registry是一個無狀態(tài)、可擴展的服務(wù)器端應(yīng)用程序,本文給大家介紹Docker?Registry使用和部署方式,感興趣的朋友一起看看吧
1. Docker Registry 基礎(chǔ)概念
什么是 Docker Registry
- Docker Registry 是一個無狀態(tài)、可擴展的服務(wù)器端應(yīng)用程序
- 用于存儲和分發(fā) Docker 鏡像
- 官方提供開源版本
registry:2,是 Docker 官方推薦的私有倉庫解決方案
核心作用
- 鏡像存儲: 集中存儲 Docker 鏡像
- 鏡像分發(fā): 在不同環(huán)境和節(jié)點間共享鏡像
- 版本管理: 管理鏡像的不同版本和標(biāo)簽
- 訪問控制: 提供認(rèn)證和授權(quán)機制
2. Docker Registry 部署方式
簡單部署
root@controller1:~# docker pull registry:2.7.0 2.7.0: Pulling from library/registry e3c488b39803: Pull complete 05a63128803b: Pull complete 1b07057daa1a: Pull complete 3ed3807221bb: Pull complete 2238f667b955: Pull complete a08a29f99d0a: Pull complete Digest: sha256:1cd9409a311350c3072fe510b52046f104416376c126a479cef9a4dfe692cf57 Status: Downloaded newer image for registry:2.7.0 docker.io/library/registry:2.7.0 root@controller1:~# # 運行基本的 Registry 實例 docker run -d -p 5000:5000 --name registry registry:2
生產(chǎn)環(huán)境部署配置
docker run -d \ -p 5000:5000 \ --restart=always \ --name registry \ -v /path/to/certs:/certs \ -v /path/to/auth:/auth \ -v /path/to/data:/var/lib/registry \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ -e REGISTRY_AUTH=htpasswd \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" \ registry:2
3. 核心配置參數(shù)詳解
存儲配置
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: 文件系統(tǒng)存儲根目錄REGISTRY_STORAGE_DELETE_ENABLED: 是否允許刪除鏡像(默認(rèn) false)REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR: 緩存配置
安全配置
REGISTRY_HTTP_TLS_CERTIFICATE: TLS 證書路徑REGISTRY_HTTP_TLS_KEY: TLS 私鑰路徑REGISTRY_AUTH: 認(rèn)證方式(htpasswd、token 等)REGISTRY_AUTH_HTPASSWD_PATH: htpasswd 文件路徑
網(wǎng)絡(luò)配置
REGISTRY_HTTP_ADDR: HTTP 監(jiān)聽地址REGISTRY_HTTP_HOST: 外部訪問地址REGISTRY_HTTP_SECRET: HTTP 密鑰
4. 認(rèn)證與授權(quán)機制
HTPASSWD 認(rèn)證
# 創(chuàng)建密碼文件 mkdir auth docker run --rm --entrypoint htpasswd registry:2 -Bbn username password > auth/htpasswd # 啟動帶認(rèn)證的 Registry docker run -d -p 5000:5000 --name registry \ -v $(pwd)/auth:/auth \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ registry:2
客戶端登錄
# 登錄私有倉庫 docker login localhost:5000 # 推送鏡像 docker tag ubuntu:latest localhost:5000/ubuntu:latest docker push localhost:5000/ubuntu:latest # 拉取鏡像 docker pull localhost:5000/ubuntu:latest
5. 鏡像管理操作
鏡像推送流程
標(biāo)記鏡像:
docker tag SOURCE_IMAGE:TAG REGISTRY_HOST:PORT/IMAGE_NAME:TAG
推送鏡像:
docker push REGISTRY_HOST:PORT/IMAGE_NAME:TAG
鏡像拉取流程
docker pull REGISTRY_HOST:PORT/IMAGE_NAME:TAG
查看倉庫信息
# 查看倉庫列表 curl http://REGISTRY_HOST:PORT/v2/_catalog # 查看鏡像標(biāo)簽 curl http://REGISTRY_HOST:PORT/v2/IMAGE_NAME/tags/list
刪除鏡像
# 啟用刪除功能 -e REGISTRY_STORAGE_DELETE_ENABLED=true # 刪除鏡像 manifest curl -X DELETE http://REGISTRY_HOST:PORT/v2/IMAGE_NAME/manifests/DIGEST
使用示例
root@controller1:~/zeng/docker_pull# docker push registry.tethrnet.com:5000/mongo:latest
The push refers to repository [registry.tethrnet.com:5000/mongo]
a4aac564b866: Pushed
afc67efe5570: Pushed
fa742b9a5a74: Pushed
c22d31789a0b: Pushed
27b6909edf8c: Pushed
125fad5c3f6f: Pushed
b23a008a4788: Pushed
8eb266e6a340: Pushed
f23c7009bffa: Pushed
7fbab1a08895: Pushed
551f518b33f2: Pushed
e996f7b5c172: Pushed
latest: digest: sha256:cf4e7392f797d8c788c4725d240c685b595087ef6c1043e4ea4b311e232b8430 size: 2823
root@controller1:~/zeng/docker_pull#
root@controller1:~/zeng/docker_pull#
root@controller1:~/zeng/docker_pull#
root@controller1:~/zeng/docker_pull#
root@controller1:~/zeng/docker_pull#
root@controller1:~/zeng/docker_pull# curl -X GET -u tethrnet:Tethrnet@@123 https://registry.tethrnet.com:5000/v2/mongo/tags/list
{"name":"mongo","tags":["latest","4.2.10-bionic"]}
root@controller1:~/zeng/docker_pull#6. 存儲后端配置
本地文件系統(tǒng)
-e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry
AWS S3
-e REGISTRY_STORAGE=s3 -e REGISTRY_STORAGE_S3_ACCESSKEY=your_access_key -e REGISTRY_STORAGE_S3_SECRETKEY=your_secret_key -e REGISTRY_STORAGE_S3_REGION=us-east-1 -e REGISTRY_STORAGE_S3_BUCKET=bucket_name
其他存儲
- Azure Blob Storage
- Google Cloud Storage
- OpenStack Swift
- Alibaba Cloud OSS
7. 高可用部署
多實例部署
- 使用共享存儲(如 NFS、S3)
- 前端負(fù)載均衡器分發(fā)請求
- 每個實例獨立運行
數(shù)據(jù)持久化
# 掛載持久化存儲卷 -v /host/data/path:/var/lib/registry
備份與恢復(fù)
# 備份數(shù)據(jù)目錄 tar czf registry_backup.tar.gz /var/lib/registry # 恢復(fù)數(shù)據(jù) tar xzf registry_backup.tar.gz -C /
8. 監(jiān)控與日志
日志配置
-e REGISTRY_LOG_LEVEL=info -e REGISTRY_LOG_FORMATTER_NAME=json
健康檢查
# 健康檢查端點 curl http://REGISTRY_HOST:PORT/v2/
性能監(jiān)控
- 監(jiān)控存儲使用情況
- 網(wǎng)絡(luò)流量監(jiān)控
- 請求響應(yīng)時間監(jiān)控
9. 常見問題與解決方案
證書問題
- 確保客戶端信任 Registry 證書
- 使用
--insecure-registry參數(shù)(不推薦用于生產(chǎn))
存儲空間不足
- 定期清理未使用的鏡像
- 配置鏡像自動清理策略
- 擴展存儲容量
性能優(yōu)化
- 啟用緩存機制
- 使用 CDN 加速鏡像分發(fā)
- 優(yōu)化網(wǎng)絡(luò)配置
參考連接:https://www.cnblogs.com/Chary/p/18095027
到此這篇關(guān)于Docker Registry 使用和部署方式的文章就介紹到這了,更多相關(guān)Docker Registry 使用總結(jié)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker發(fā)布鏡像到DockerHub與阿里云容器
本文主要介紹了Docker發(fā)布鏡像到DockerHub與阿里云容器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
docker容器源碼部署httpd用存儲卷部署網(wǎng)站(推薦)
這篇文章主要介紹了docker容器源碼部署httpd用存儲卷部署網(wǎng)站,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12

