
ngc7331/registrydocker-registry是Docker官方提供的开源镜像仓库实现,它允许用户轻松搭建和运行私有Docker镜像仓库。通过使用docker-registry,组织可以安全地存储、管理和分发Docker镜像,避免将敏感镜像上传到公共仓库,同时提高镜像拉取速度并降低带宽成本。该镜像完全符合Docker镜像仓库API规范,可与标准Docker命令行工具无缝集成。
docker-registry适用于以下场景:
使用以下命令快速启动一个基本的docker-registry实例:
bashdocker run -d -p 5000:5000 --name registry ngc7331/docker-registry
这将在本地5000端口启动一个docker-registry服务,所有镜像数据将存储在容器内部的/var/lib/registry目录。
为确保容器重启后镜像数据不丢失,应使用数据卷挂载:
bashdocker run -d -p 5000:5000 --name registry \ -v /path/to/local/storage:/var/lib/registry \ ngc7331/docker-registry
创建docker-compose.yml文件:
yamlversion: '3' services: registry: image: ngc7331/docker-registry ports: - "5000:5000" volumes: - registry_data:/var/lib/registry restart: always environment: - REGISTRY_STORAGE_DELETE_ENABLED=true volumes: registry_data:
使用以下命令启动:
bashdocker-compose up -d
生产环境中应启用HTTPS以确保通信安全:
bashdocker run -d -p 443:443 --name registry \ -v /path/to/certs:/certs \ -v /path/to/data:/var/lib/registry \ -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ ngc7331/docker-registry
可以通过添加认证中间件来保护 registry:
bash# 创建密码文件 mkdir auth docker run --rm --entrypoint htpasswd registry:2 -Bbn username password > auth/htpasswd # 启动带认证的registry docker run -d -p 5000:5000 --name registry \ -v /path/to/auth:/auth \ -v /path/to/data:/var/lib/registry \ -e REGISTRY_AUTH=htpasswd \ -e REGISTRY_AUTH_HTPASSWD_REALM=RegistryRealm \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ ngc7331/docker-registry
bashdocker login myregistry.example.com:5000
bashdocker tag my-image:latest myregistry.example.com:5000/my-image:latest
bashdocker push myregistry.example.com:5000/my-image:latest
bashdocker pull myregistry.example.com:5000/my-image:latest
bashcurl [***]
bashcurl [***]
docker-registry支持多种环境变量配置,常用选项包括:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
| REGISTRY_HTTP_ADDR | 服务监听地址 | :5000 |
| REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY | 文件系统存储根目录 | /var/lib/registry |
| REGISTRY_AUTH | 认证类型,如htpasswd、token | 无 |
| REGISTRY_AUTH_HTPASSWD_PATH | htpasswd文件路径 | 无 |
| REGISTRY_HTTP_TLS_CERTIFICATE | TLS证书路径 | 无 |
| REGISTRY_HTTP_TLS_KEY | TLS私钥路径 | 无 |
| REGISTRY_STORAGE_DELETE_ENABLED | 是否允许删除镜像 | false |
| REGISTRY_CACHE_BLOBDESCRIPTOR | 缓存类型 | inmemory |
对于复杂配置需求,可以使用配置文件挂载:
bashdocker run -d -p 5000:5000 --name registry \ -v /path/to/config.yml:/etc/docker/registry/config.yml \ -v /path/to/data:/var/lib/registry \ ngc7331/docker-registry
配置文件示例:
yamlversion: 0.1 log: fields: service: registry storage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry http: addr: :5000 headers: X-Content-Type-Options: [nosniff] health: storagedriver: enabled: true interval: 10s threshold: 3
清理未被引用的镜像数据以释放存储空间:
bash# 进入容器 docker exec -it registry /bin/sh # 运行垃圾回收 registry garbage-collect /etc/docker/registry/config.yml
由于所有数据存储在/var/lib/registry目录,只需备份此目录即可:
bashdocker exec registry tar -czf - /var/lib/registry > registry_backup.tar.gz
检查registry健康状态:
bashcurl [***]



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务