目录
全面部署与配置 Docker 私有镜像仓库:本地存储与阿里云 OSS 双方案实践
全面部署与配置 Docker 私有镜像仓库:本地存储与阿里云 OSS 双方案实践
摘要
本文详细介绍了如何使用 Docker Registry 构建私有镜像仓库,涵盖了两种存储方案:本地文件系统和阿里云 OSS。通过实际的部署步骤和配置示例,读者将学会如何设置仓库存储、配置用户认证,并实现安全的镜像管理。无论是希望在本地快速搭建测试环境,还是在云端实现高可用的镜像存储,本文都提供了实用的指导。
正文
一、引言
在现代 DevOps 流程中,私有镜像仓库是保障镜像安全性和提升部署效率的关键组件。Docker Registry 作为官方提供的镜像仓库解决方案,支持多种存储后端,灵活性高。本文将通过实际案例,展示如何基于本地文件系统和阿里云 OSS 部署私有镜像仓库,并配置用户认证机制。
二、部署方案概览
1. 本地文件系统存储
-
适用场景:快速搭建测试环境或资源受限的本地部署。
-
优势:部署简单,易于管理。
-
劣势:不适合大规模或分布式环境。
2. 阿里云 OSS 存储
-
适用场景:需要高可用、高扩展性的生产环境。
-
优势:存储容量大,支持多区域部署,数据持久性高。
-
劣势:配置相对复杂,可能涉及额外的费用。
三、部署步骤
1. 使用本地文件系统存储
步骤一:创建本地存储目录
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
2. 使用阿里云 OSS 存储
步骤一:确保已创建阿里云 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: <your-access-key-id>
REGISTRY_STORAGE_S3_SECRETKEY: <your-access-key-secret>
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
五、使用私有仓库
1. 登录仓库
docker login 127.0.0.1:30500
输入用户名和密码后,显示 Login Succeeded
表示登录成功。
2. 推送镜像
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
3. 拉取镜像
docker pull 127.0.0.1:30500/my-ubuntu:22.04
六、配置客户端支持 HTTP
如果私有仓库未配置 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 私有镜像仓库。无论是在本地测试环境,还是在云端生产环境,合理的配置都能有效提升镜像管理的效率和安全性。