您好,登录后才能下订单哦!
# 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.json
docker 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。