目录
全面部署与配置 Docker 私有镜像仓库:本地存储与阿里云 OSS 双方案实践
摘要
正文
一、引言
二、部署方案概览
1. 本地文件系统存储
2. 阿里云 OSS 存储
三、部署步骤
1. 使用本地文件系统存储
2. 使用阿里云 OSS 存储
四、配置用户认证
五、使用私有仓库
1. 登录仓库
2. 推送镜像
3. 拉取镜像
六、配置客户端支持 HTTP
七、结语
本文详细介绍了如何使用 Docker Registry 构建私有镜像仓库,涵盖了两种存储方案:本地文件系统和阿里云 OSS。通过实际的部署步骤和配置示例,读者将学会如何设置仓库存储、配置用户认证,并实现安全的镜像管理。无论是希望在本地快速搭建测试环境,还是在云端实现高可用的镜像存储,本文都提供了实用的指导。
在现代 DevOps 流程中,私有镜像仓库是保障镜像安全性和提升部署效率的关键组件。Docker Registry 作为官方提供的镜像仓库解决方案,支持多种存储后端,灵活性高。本文将通过实际案例,展示如何基于本地文件系统和阿里云 OSS 部署私有镜像仓库,并配置用户认证机制。
适用场景:快速搭建测试环境或资源受限的本地部署。
优势:部署简单,易于管理。
劣势:不适合大规模或分布式环境。
适用场景:需要高可用、高扩展性的生产环境。
优势:存储容量大,支持多区域部署,数据持久性高。
劣势:配置相对复杂,可能涉及额外的费用。
步骤一:创建本地存储目录
mkdir -p /root/brytech-registry
步骤二:编写 docker-compose.yml
文件
version: '3.7'
services:
registry:
image: registry:3
container_name: registry
restart: always
ports:
- "0.0.0.0:30500:5000"
environment:
REGISTRY_STORAGE: filesystem
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /var/lib/registry
REGISTRY_HTTP_SECRET: "your-secret"
OTEL_TRACES_EXPORTER: "none"
volumes:
- /root/brytech-registry:/var/lib/registry
步骤三:启动服务
docker-compose up -d
步骤一:确保已创建阿里云 OSS Bucket,并获取 AccessKey 和 SecretKey。
步骤二:编写 docker-compose.yml
文件
version: '3.7'
services:
registry:
image: registry:3
container_name: registry
restart: always
ports:
- "0.0.0.0:30500:5000"
environment:
REGISTRY_STORAGE: s3
REGISTRY_STORAGE_S3_REGION: oss-cn-shanghai
REGISTRY_STORAGE_S3_BUCKET: brytech-registry
REGISTRY_STORAGE_S3_ACCESSKEY:
REGISTRY_STORAGE_S3_SECRETKEY:
REGISTRY_STORAGE_S3_REGIONENDPOINT: http://oss-cn-shanghai-internal.aliyuncs.com
REGISTRY_STORAGE_S3_SECURE: "false"
REGISTRY_HTTP_SECRET: "your-secret"
OTEL_TRACES_EXPORTER: "none"
步骤三:启动服务
docker-compose up -d
为了增强安全性,可以为私有仓库配置用户名和密码认证。
步骤一:安装 htpasswd
工具
sudo apt-get install apache2-utils # Debian/Ubuntu
# 或
sudo yum install httpd-tools # CentOS/RHEL
步骤二:创建认证文件
mkdir -p /root/brytech-registry/auth
htpasswd -Bc /root/brytech-registry/auth/htpasswd admin
步骤三:修改 docker-compose.yml
文件,添加认证配置
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
步骤四:挂载认证文件
volumes:
- /root/brytech-registry:/var/lib/registry
- /root/brytech-registry/auth:/auth
步骤五:重启服务
docker-compose down
docker-compose up -d
docker login 127.0.0.1:30500
输入用户名和密码后,显示 Login Succeeded
表示登录成功。
docker tag ubuntu:22.04 127.0.0.1:30500/my-ubuntu:22.04
docker push 127.0.0.1:30500/my-ubuntu:22.04
docker pull 127.0.0.1:30500/my-ubuntu:22.04
如果私有仓库未配置 HTTPS,客户端需要允许通过 HTTP 访问。
Docker 客户端配置:
编辑 /etc/docker/daemon.json
文件,添加以下内容:
{
"insecure-registries": ["127.0.0.1:30500"]
}
然后重启 Docker 服务:
sudo systemctl restart docker
Containerd 客户端配置:
编辑 /etc/containerd/config.toml
文件,添加以下内容:
[plugins."io.containerd.grpc.v1.cri".registry]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."127.0.0.1:30500"]
endpoint = ["http://127.0.0.1:30500"]
然后重启 Containerd 服务:
sudo systemctl restart containerd
通过本文的指导,您可以根据实际需求选择合适的存储方案,快速部署并配置安全的 Docker 私有镜像仓库。无论是在本地测试环境,还是在云端生产环境,合理的配置都能有效提升镜像管理的效率和安全性。