全面部署与配置 Docker 私有镜像仓库:本地存储与阿里云 OSS 双方案实践

目录

全面部署与配置 Docker 私有镜像仓库:本地存储与阿里云 OSS 双方案实践

摘要

正文

一、引言

二、部署方案概览

1. 本地文件系统存储

2. 阿里云 OSS 存储

三、部署步骤

1. 使用本地文件系统存储

2. 使用阿里云 OSS 存储

四、配置用户认证

五、使用私有仓库

1. 登录仓库

2. 推送镜像

3. 拉取镜像

六、配置客户端支持 HTTP

七、结语


全面部署与配置 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 私有镜像仓库。无论是在本地测试环境,还是在云端生产环境,合理的配置都能有效提升镜像管理的效率和安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值