Docker Registry 详解:概念、安装与配置

一、Docker Registry 概述

Docker Registry 是 Docker 生态系统中的核心组件,负责存储、管理和分发 Docker 镜像。它是一个开源的服务器端应用程序,允许用户通过 HTTP API 上传、下载和管理 Docker 镜像。

核心特性

  • 镜像存储​:提供集中化的镜像存储解决方案,支持多层存储结构优化空间利用率
  • 版本控制​:通过标签(Tag)机制管理镜像的不同版本,支持版本回溯
  • 访问控制​:支持 Basic Auth、Token 等多种认证方式,保障私有镜像安全
  • 分布式架构​:可部署为多节点集群,提高可用性和扩展性

常见类型

  1. 公共 Registry​:如 Docker Hub,包含大量官方和社区镜像
  2. 私有 Registry​:企业自建仓库,如 Harbor、Nexus 等
  3. 云服务 Registry​:AWS ECR、Google Container Registry 等云厂商提供的托管服务

二、安装 Docker Registry

环境准备

  • 操作系统​:Linux (CentOS 7+/Ubuntu 20.04+ 等)
  • Docker 版本​:1.10.0 或更高
  • 硬件配置​:建议 2 核 CPU、2GB 内存以上,存储空间根据镜像规模调整

基础安装步骤

  1. 拉取官方镜像​:docker pull registry:2
  2. 运行 Registry 容器​:docker run -d -p 5000:5000 \ --restart=always \ --name registry \ -v /mydata/registry:/var/lib/registry \ registry:2
    • -v 参数将容器内数据持久化到宿主机
    • --restart=always 确保容器自动重启
  3. 验证安装​:curl http://localhost:5000/v2/_catalog返回 {"repositories":[]} 表示运行正常

三、详细配置指南

1. HTTP 安全配置

由于 Docker 默认要求 HTTPS,对于内网环境可配置 HTTP 访问:

  1. 修改 /etc/docker/daemon.json{ "insecure-registries": ["192.168.1.100:5000"] }
  2. 重启 Docker 服务:systemctl daemon-reload systemctl restart docker

2. HTTPS 安全配置(生产环境推荐)

  1. 生成自签名证书​:mkdir -p /certs && cd /certs openssl req -newkey rsa:4096 -nodes -sha256 \ -keyout domain.key -x509 -days 365 -out domain.crt
  2. 启动带 HTTPS 的 Registry​:docker run -d -p 443:5000 \ --name registry \ -v /certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry:2

3. 用户认证配置

  1. 创建认证文件​:mkdir -p /auth docker run --entrypoint htpasswd registry:2 \ -Bbn username password > /auth/htpasswd
  2. 启动带认证的 Registry​:docker run -d -p 5000:5000 \ --name registry \ -v /auth:/auth \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \ registry:2

4. Web UI 管理界面

  1. 部署 registry-ui​:docker run -d -p 8080:80 \ --name registry-ui \ -e REGISTRY_TITLE="My Private Registry" \ -e NGINX_PROXY_PASS="http://registry:5000" \ --link registry \ joxit/docker-registry-ui:latest
  2. 访问 http://localhost:8080 即可查看可视化界面

四、使用 Docker Registry

1. 镜像推送流程

  1. 标记镜像​:docker tag nginx:latest localhost:5000/my-nginx:v1
  2. 推送镜像​:docker push localhost:5000/my-nginx:v1

2. 镜像拉取流程

docker pull localhost:5000/my-nginx:v1

3. 查看仓库内容

curl http://localhost:5000/v2/_catalog
curl http://localhost:5000/v2/my-nginx/tags/list

五、高级配置与管理

1. 使用 Docker Compose 部署

创建 docker-compose.yml

services:
  registry:
    image: registry:2
    ports:
      - "5000:5000"
    volumes:
      - /mnt/registry:/var/lib/registry
    environment:
      - REGISTRY_AUTH=htpasswd
      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
      - REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm"

2. 存储清理与垃圾回收

docker exec -it registry /bin/registry garbage-collect \
  /etc/docker/registry/config.yml

3. 备份策略

定期备份挂载的存储卷:

tar czvf registry-backup-$(date +%Y%m%d).tar.gz /mnt/registry

六、企业级方案对比

解决方案 类型 核心优势 适用场景
Docker Registry 开源 轻量级、易部署 小型团队、开发测试环境
Harbor 企业级开源 安全扫描、RBAC、复制策略 中大型企业生产环境
AWS ECR 云托管 深度集成AWS服务、自动加密 AWS生态用户
Nexus 多格式支持 支持Docker、Maven等多种仓库 已有Nexus基础设施企业

七、最佳实践建议

  1. 生产环境务必启用HTTPS,避免中间人攻击
  2. 定期清理旧镜像,设置保留策略(如仅保留最近5个版本)
  3. 监控存储使用情况,避免磁盘空间耗尽
  4. 实施备份策略,特别是对于关键业务镜像
  5. 考虑使用Harbor等企业级方案获取更完善的功能

通过以上配置和管理方法,您可以构建一个安全、高效的Docker Registry环境,满足从开发测试到生产部署的各种需求。

正文完
 0
评论(没有评论)
验证码