# Linux中怎么搭建Docker私有仓库 ## 目录 1. [Docker私有仓库概述](#1-docker私有仓库概述) - 1.1 [什么是私有仓库](#11-什么是私有仓库) - 1.2 [为什么需要私有仓库](#12-为什么需要私有仓库) - 1.3 [常见私有仓库方案](#13-常见私有仓库方案) 2. [环境准备](#2-环境准备) - 2.1 [硬件要求](#21-硬件要求) - 2.2 [软件要求](#22-软件要求) - 2.3 [网络规划](#23-网络规划) 3. [安装Docker](#3-安装docker) - 3.1 [Ubuntu/Debian系统安装](#31-ubuntudebian系统安装) - 3.2 [CentOS/RHEL系统安装](#32-centosrhel系统安装) - 3.3 [验证安装](#33-验证安装) 4. [部署Registry私有仓库](#4-部署registry私有仓库) - 4.1 [快速启动Registry容器](#41-快速启动registry容器) - 4.2 [配置TLS证书](#42-配置tls证书) - 4.3 [配置HTTP基本认证](#43-配置http基本认证) - 4.4 [持久化存储配置](#44-持久化存储配置) 5. [高级配置](#5-高级配置) - 5.1 [使用Nginx反向代理](#51-使用nginx反向代理) - 5.2 [配置HTTPS访问](#52-配置https访问) - 5.3 [仓库垃圾清理](#53-仓库垃圾清理) 6. [客户端配置与使用](#6-客户端配置与使用) - 6.1 [配置客户端认证](#61-配置客户端认证) - 6.2 [镜像推送与拉取](#62-镜像推送与拉取) - 6.3 [查看仓库内容](#63-查看仓库内容) 7. [Harbor企业级仓库](#7-harbor企业级仓库) - 7.1 [Harbor简介](#71-harbor简介) - 7.2 [Harbor安装部署](#72-harbor安装部署) - 7.3 [Harbor功能使用](#73-harbor功能使用) 8. [安全加固](#8-安全加固) - 8.1 [防火墙配置](#81-防火墙配置) - 8.2 [访问控制策略](#82-访问控制策略) - 8.3 [日志审计](#83-日志审计) 9. [常见问题排查](#9-常见问题排查) 10. [总结](#10-总结) ## 1. Docker私有仓库概述 ### 1.1 什么是私有仓库 Docker私有仓库是用于存储和管理Docker镜像的专用服务器,类似于Docker Hub但部署在组织内部。它允许团队: - 存储专有镜像 - 控制访问权限 - 提高部署效率 - 满足合规要求 ### 1.2 为什么需要私有仓库 1. **安全性**:避免将敏感镜像暴露在公网 2. **性能**:本地网络传输比公网更快 3. **合规**:满足数据不出境等监管要求 4. **成本**:减少Docker Hub的订阅费用 ### 1.3 常见私有仓库方案 | 方案 | 特点 | 适用场景 | |-------------|-----------------------------|---------------------| | Docker Registry | 官方基础方案,轻量级 | 小型团队/简单需求 | | Harbor | 企业级功能,带UI界面 | 中大型企业 | | Nexus | 支持多种包格式 | 已有Nexus基础设施 | | JFrog Artifactory | 全功能制品仓库 | 大型企业/复杂需求 | ## 2. 环境准备 ### 2.1 硬件要求 - **最低配置**: - CPU:2核 - 内存:4GB - 存储:100GB(根据镜像数量扩展) - **推荐配置**: - CPU:4核+ - 内存:8GB+ - 存储:1TB+(建议使用独立存储设备) ### 2.2 软件要求 - 操作系统: - Ubuntu 18.04+/CentOS 7+ - 内核版本:4.x+ - 依赖软件: ```bash # 基础工具 sudo apt-get update && sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release # Docker依赖 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 建议配置: - 固定IP地址 - 域名解析(如registry.example.com) - 防火墙开放5000端口(或自定义端口) - 内网带宽≥1Gbps
# 添加Docker官方源 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装Docker引擎 sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # 添加yum源 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装Docker sudo yum install -y docker-ce docker-ce-cli containerd.io # 启动服务 sudo systemctl enable --now docker # 验证安装 sudo docker run hello-world 基础启动命令:
docker run -d \ -p 5000:5000 \ --restart=always \ --name registry \ -v /data/registry:/var/lib/registry \ registry:2 参数说明: - -p 5000:5000:映射容器端口 - --restart=always:自动重启 - -v:数据卷挂载
mkdir -p certs openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \ -x509 -days 365 -out certs/domain.crt \ -subj "/CN=registry.example.com" docker run -d \ -p 5000:5000 \ --name registry \ -v "$(pwd)"/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry:2 mkdir auth docker run --entrypoint htpasswd registry:2 -Bbn admin password > auth/htpasswd docker run -d \ -p 5000:5000 \ --name registry \ -v "$(pwd)"/auth:/auth \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \ registry:2 推荐存储方案: 1. 本地存储:
-v /mnt/registry:/var/lib/registry -e REGISTRY_STORAGE=s3 \ -e REGISTRY_STORAGE_S3_ACCESSKEY=AKIAxxxx \ -e REGISTRY_STORAGE_S3_SECRETKEY=xxxx \ -e REGISTRY_STORAGE_S3_REGION=us-east-1 \ -e REGISTRY_STORAGE_S3_BUCKET=my-docker-registry 示例Nginx配置:
upstream docker-registry { server 127.0.0.1:5000; } server { listen 443 ssl; server_name registry.example.com; ssl_certificate /path/to/domain.crt; ssl_certificate_key /path/to/domain.key; client_max_body_size 0; location / { proxy_pass http://docker-registry; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 客户端配置: 1. 将CA证书放入系统信任链:
sudo cp domain.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates sudo systemctl restart docker 启用删除功能:
-e REGISTRY_STORAGE_DELETE_ENABLED=true 执行垃圾回收:
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml docker login registry.example.com -u admin -p password ~/.docker/config.json%USERPROFILE%\.docker\config.jsondocker tag my-image:latest registry.example.com/my-image:1.0 docker push registry.example.com/my-image:1.0 docker pull registry.example.com/my-image:1.0 使用API查询:
curl -X GET https://registry.example.com/v2/_catalog curl -X GET https://registry.example.com/v2/my-image/tags/list Harbor提供: - 基于角色的访问控制(RBAC) - 镜像漏洞扫描 - 图形化管理界面 - 镜像复制策略 - 审计日志
wget https://github.com/goharbor/harbor/releases/download/v2.6.0/harbor-offline-installer-v2.6.0.tgz tar xvf harbor-offline-installer-v2.6.0.tgz # harbor.yml hostname: registry.example.com http: port: 80 https: port: 443 certificate: /path/to/cert.crt private_key: /path/to/cert.key data_volume: /data/harbor sudo ./install.sh 主要功能操作: 1. 创建项目:Web界面 → 项目 → 新建项目 2. 配置机器人账户:项目 → 机器人账户 → 新建 3. 设置复制规则:管理 → 复制管理 → 新建规则 4. 漏洞扫描:项目 → 镜像 → 扫描
# 仅允许内网访问 sudo ufw allow from 192.168.1.0/24 to any port 5000 sudo ufw enable 网络隔离:
客户端IP限制(Nginx示例):
location / { allow 192.168.1.0/24; deny all; } 配置日志收集:
docker run -d \ --log-driver=syslog \ --log-opt syslog-address=tcp://1.2.3.4:514 \ registry:2 解决方案: 1. 修改Docker配置:
// /etc/docker/daemon.json { "insecure-registries" : ["registry.example.com:5000"] } sudo systemctl restart docker 排查方法:
# 查看仓库存储使用情况 du -sh /var/lib/registry/docker/registry/v2 解决方案: 1. 清理旧镜像 2. 配置存储配额:
storage: filesystem: rootdirectory: /var/lib/registry maxthreads: 100 cache: blobdescriptor: inmemory maintenance: uploadpurging: enabled: true age: 168h interval: 24h dryrun: false 搭建Docker私有仓库是企业容器化的重要基础设施,本文详细介绍了: 1. 从基础的Registry部署到企业级Harbor方案 2. 包含安全认证、持久化存储等关键配置 3. 提供了客户端使用和问题排查指南
建议生产环境: - 使用Harbor方案 - 配置HTTPS+双向认证 - 定期备份仓库数据 - 实施镜像扫描策略
通过私有仓库的建设,企业可以: ✓ 提升交付效率
✓ 保障镜像安全
✓ 满足合规要求
✓ 优化网络性能 “`
注:本文实际约4500字,完整5000字版本可扩展以下内容: 1. 各配置参数的详细解释 2. 性能调优指南 3. 备份恢复方案 4. 与CI/CD系统的集成 5. 监控指标设置 6. 多节点高可用方案
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。