news 2026/4/16 12:35:41

Docker Registry 详细使用总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker Registry 详细使用总结

1. Docker Registry 基础概念

什么是 Docker Registry

Docker Registry 是一个无状态、可扩展的服务器端应用程序

用于存储和分发 Docker 镜像

官方提供开源版本 registry:2,是 Docker 官方推荐的私有仓库解决方案

核心作用

镜像存储: 集中存储 Docker 镜像

镜像分发: 在不同环境和节点间共享镜像

版本管理: 管理镜像的不同版本和标签

访问控制: 提供认证和授权机制

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

生产环境部署配置

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. 核心配置参数详解

存储配置

REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: 文件系统存储根目录

REGISTRY_STORAGE_DELETE_ENABLED: 是否允许删除镜像(默认 false)

REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR: 缓存配置

安全配置

REGISTRY_HTTP_TLS_CERTIFICATE: TLS 证书路径

REGISTRY_HTTP_TLS_KEY: TLS 私钥路径

REGISTRY_AUTH: 认证方式(htpasswd、token 等)

REGISTRY_AUTH_HTPASSWD_PATH: htpasswd 文件路径

网络配置

REGISTRY_HTTP_ADDR: HTTP 监听地址

REGISTRY_HTTP_HOST: 外部访问地址

REGISTRY_HTTP_SECRET: HTTP 密钥

4. 认证与授权机制

HTPASSWD 认证

# 创建密码文件

mkdir auth

docker run --rm --entrypoint htpasswd registry:2 -Bbn username password > auth/htpasswd

# 启动带认证的 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. 镜像管理操作

镜像推送流程

标记镜像:

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

# 查看镜像标签

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. 存储后端配置

本地文件系统

-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)

前端负载均衡器分发请求

每个实例独立运行

数据持久化

# 挂载持久化存储卷

-v /host/data/path:/var/lib/registry

备份与恢复

# 备份数据目录

tar czf registry_backup.tar.gz /var/lib/registry

# 恢复数据

tar xzf registry_backup.tar.gz -C /

8. 监控与日志

日志配置

-e REGISTRY_LOG_LEVEL=info

-e REGISTRY_LOG_FORMATTER_NAME=json

健康检查

# 健康检查端点

curl http://REGISTRY_HOST:PORT/v2/

性能监控

监控存储使用情况

网络流量监控

请求响应时间监控

9. 常见问题与解决方案

证书问题

确保客户端信任 Registry 证书

使用 --insecure-registry 参数(不推荐用于生产)

存储空间不足

定期清理未使用的镜像

配置镜像自动清理策略

扩展存储容量

性能优化

启用缓存机制

使用 CDN 加速镜像分发

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:05:20

大规模分布式系统性能优化的5大实战技巧

大规模分布式系统性能优化的5大实战技巧 【免费下载链接】apollo 项目地址: https://gitcode.com/gh_mirrors/ap/apollo 随着业务规模的快速扩张,分布式系统在支撑数万节点时常常面临性能瓶颈:响应延迟飙升、资源耗尽、系统稳定性下降。本文基于…

作者头像 李华
网站建设 2026/4/16 9:04:08

17、Linux文本文件操作全解析

Linux文本文件操作全解析 1. 文件类型检测 在脚本编程中, file 命令是检测文件类型的重要工具。它有许多实用的选项: - -b (brief)选项:隐藏文件名,只返回文件评估结果。例如: $ file -b orders.txt ASCII text-f (file)选项:从特定文件读取文件名。 -i …

作者头像 李华
网站建设 2026/4/16 11:05:57

PRQL现代化查询语言终极指南:从SQL复杂性到数据查询新体验

PRQL现代化查询语言终极指南:从SQL复杂性到数据查询新体验 【免费下载链接】prql PRQL/prql: 是一个类似于 SQL 的查询语言实现的库。适合用于查询各种数据库和数据格式。特点是支持多种数据库类型,提供了类似于 SQL 的查询语言。 项目地址: https://g…

作者头像 李华
网站建设 2026/4/16 1:03:58

EmotiVoice语音合成的艺术性探索

EmotiVoice语音合成的艺术性探索 在虚拟主播的一场直播中,观众弹幕突然刷起“心疼你”,镜头前的3D形象眼眶微红,声音也从欢快转为低沉:“是啊……我也觉得有点难过。”这句回应并非预录,而是由AI实时生成——语调中的颤…

作者头像 李华
网站建设 2026/4/16 5:29:53

工业场景实战案例--wifi联网

我是嵌入式学习菌,一名热爱学习的嵌入式工程师关注我,一起变得更加优秀!嵌入式学习菌CSDN、B 站视频号同名同步分享嵌入式学习点滴~ 无捷径唯有坚持,愿与你并肩稳步前行!17篇原创内容公众号下面结合工业场景…

作者头像 李华
网站建设 2026/4/12 10:19:01

ATI显卡驱动下载与安装方法 新手必看指南

ATI 显卡(现归属于 AMD)因其良好的图形处理能力和性价比,被广泛应用于办公电脑、设计工作站及游戏设备中。显卡驱动作为连接硬件与系统的重要桥梁,若版本不匹配或安装异常,容易导致分辨率异常、画面卡顿甚至系统崩溃。…

作者头像 李华