如何高效利用Docker Registry实现容器镜像管理?
摘要:Docker Registry 详细使用总结 1. Docker Registry 基础概念 什么是 Docker Registry Docker Registry 是一个无状态、可扩展的服务器端应用程序 用于存储和分发 Docker 镜像
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 \
re
