Docker?Registry?使用和部署方式
1. Docker Registry 基礎(chǔ)概念
什么是 Docker Registry
- Docker Registry 是一個(gè)無狀態(tài)、可擴(kuò)展的服務(wù)器端應(yīng)用程序
- 用于存儲(chǔ)和分發(fā) Docker 鏡像
- 官方提供開源版本
registry:2,是 Docker 官方推薦的私有倉庫解決方案
核心作用
- 鏡像存儲(chǔ): 集中存儲(chǔ) Docker 鏡像
- 鏡像分發(fā): 在不同環(huán)境和節(jié)點(diǎn)間共享鏡像
- 版本管理: 管理鏡像的不同版本和標(biāo)簽
- 訪問控制: 提供認(rèn)證和授權(quán)機(jī)制
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:~# # 運(yùn)行基本的 Registry 實(shí)例 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ù)詳解
存儲(chǔ)配置
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: 文件系統(tǒng)存儲(chǔ)根目錄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)機(jī)制
HTPASSWD 認(rèn)證
# 創(chuàng)建密碼文件 mkdir auth docker run --rm --entrypoint htpasswd registry:2 -Bbn username password > auth/htpasswd # 啟動(dòng)帶認(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. 存儲(chǔ)后端配置
本地文件系統(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
其他存儲(chǔ)
- Azure Blob Storage
- Google Cloud Storage
- OpenStack Swift
- Alibaba Cloud OSS
7. 高可用部署
多實(shí)例部署
- 使用共享存儲(chǔ)(如 NFS、S3)
- 前端負(fù)載均衡器分發(fā)請(qǐng)求
- 每個(gè)實(shí)例獨(dú)立運(yùn)行
數(shù)據(jù)持久化
# 掛載持久化存儲(chǔ)卷 -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
健康檢查
# 健康檢查端點(diǎn) curl http://REGISTRY_HOST:PORT/v2/
性能監(jiān)控
- 監(jiān)控存儲(chǔ)使用情況
- 網(wǎng)絡(luò)流量監(jiān)控
- 請(qǐng)求響應(yīng)時(shí)間監(jiān)控
9. 常見問題與解決方案
證書問題
- 確保客戶端信任 Registry 證書
- 使用
--insecure-registry參數(shù)(不推薦用于生產(chǎn))
存儲(chǔ)空間不足
- 定期清理未使用的鏡像
- 配置鏡像自動(dòng)清理策略
- 擴(kuò)展存儲(chǔ)容量
性能優(yōu)化
- 啟用緩存機(jī)制
- 使用 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker?制作tomcat鏡像并部署項(xiàng)目的步驟
這篇文章主要介紹了Docker?制作tomcat鏡像并部署項(xiàng)目?,講解如何制作自己的tomcat鏡像,并使用tomcat部署項(xiàng)目,需要的朋友可以參考下2022-10-10
Docker 部署net5程序?qū)崿F(xiàn)跨平臺(tái)功能
本文講述使用docker容器部署.net5項(xiàng)目、實(shí)現(xiàn)跨平臺(tái),本文通過圖文的形式給大家介紹了創(chuàng)建.net5項(xiàng)目的過程及安裝成功后如何使用docker部署項(xiàng)目,感興趣的朋友跟隨小編一起學(xué)習(xí)吧2021-05-05
docker搭建jenkins+maven代碼構(gòu)建部署平臺(tái)
本文主要介紹了docker搭建jenkins+maven代碼構(gòu)建部署平臺(tái),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
docker部署elasticsearch和xpack密碼的詳細(xì)過程
本文主要介紹在docker環(huán)境下如何快速部署elasticsearch單機(jī)版本和集群版本,和增加xpack簡單用戶名密碼配置,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2024-01-01
使用docker極簡打包java.jar鏡像并啟動(dòng)的操作步驟
這篇文章主要介紹了用docker極簡打包java.jar鏡像并啟動(dòng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08

