Linux中怎么搭建Docker私有仓库

发布时间:2022-01-27 14:06:25 作者:iii
来源:亿速云 阅读:220
# 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

2.3 网络规划

建议配置: - 固定IP地址 - 域名解析(如registry.example.com) - 防火墙开放5000端口(或自定义端口) - 内网带宽≥1Gbps

3. 安装Docker

3.1 Ubuntu/Debian系统安装

# 添加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

3.2 CentOS/RHEL系统安装

# 添加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

3.3 验证安装

# 启动服务
sudo systemctl enable --now docker

# 验证安装
sudo docker run hello-world

4. 部署Registry私有仓库

4.1 快速启动Registry容器

基础启动命令:

docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  -v /data/registry:/var/lib/registry \
  registry:2

参数说明: - -p 5000:5000:映射容器端口 - --restart=always:自动重启 - -v:数据卷挂载

4.2 配置TLS证书

  1. 生成自签名证书:
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"
  1. 带证书启动:
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

4.3 配置HTTP基本认证

  1. 创建认证文件:
mkdir auth
docker run --entrypoint htpasswd registry:2 -Bbn admin password > auth/htpasswd
  1. 启用认证:
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

4.4 持久化存储配置

推荐存储方案: 1. 本地存储

   -v /mnt/registry:/var/lib/registry
  1. 云存储(AWS S3示例):
    
    -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
    

5. 高级配置

5.1 使用Nginx反向代理

示例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;
  }
}

5.2 配置HTTPS访问

客户端配置: 1. 将CA证书放入系统信任链:

   sudo cp domain.crt /usr/local/share/ca-certificates/
   sudo update-ca-certificates
  1. 重启Docker服务:
    
    sudo systemctl restart docker
    

5.3 仓库垃圾清理

  1. 启用删除功能:

    -e REGISTRY_STORAGE_DELETE_ENABLED=true
    
  2. 执行垃圾回收:

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

6. 客户端配置与使用

6.1 配置客户端认证

  1. 登录仓库:
docker login registry.example.com -u admin -p password
  1. 自动保存凭证位置:
    • Linux: ~/.docker/config.json
    • Windows: %USERPROFILE%\.docker\config.json

6.2 镜像推送与拉取

  1. 标记镜像:
docker tag my-image:latest registry.example.com/my-image:1.0
  1. 推送镜像:
docker push registry.example.com/my-image:1.0
  1. 拉取镜像:
docker pull registry.example.com/my-image:1.0

6.3 查看仓库内容

使用API查询:

curl -X GET https://registry.example.com/v2/_catalog
curl -X GET https://registry.example.com/v2/my-image/tags/list

7. Harbor企业级仓库

7.1 Harbor简介

Harbor提供: - 基于角色的访问控制(RBAC) - 镜像漏洞扫描 - 图形化管理界面 - 镜像复制策略 - 审计日志

7.2 Harbor安装部署

  1. 下载安装包:
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
  1. 修改配置:
# 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
  1. 执行安装:
sudo ./install.sh

7.3 Harbor功能使用

主要功能操作: 1. 创建项目:Web界面 → 项目 → 新建项目 2. 配置机器人账户:项目 → 机器人账户 → 新建 3. 设置复制规则:管理 → 复制管理 → 新建规则 4. 漏洞扫描:项目 → 镜像 → 扫描

8. 安全加固

8.1 防火墙配置

# 仅允许内网访问
sudo ufw allow from 192.168.1.0/24 to any port 5000
sudo ufw enable

8.2 访问控制策略

  1. 网络隔离:

    • 将仓库部署在内网区域
    • 配置安全组/VLAN隔离
  2. 客户端IP限制(Nginx示例):

    location / {
     allow 192.168.1.0/24;
     deny all;
    }
    

8.3 日志审计

配置日志收集:

docker run -d \
  --log-driver=syslog \
  --log-opt syslog-address=tcp://1.2.3.4:514 \
  registry:2

9. 常见问题排查

问题1:推送镜像报错”http: server gave HTTP response to HTTPS client”

解决方案: 1. 修改Docker配置:

   // /etc/docker/daemon.json
   {
     "insecure-registries" : ["registry.example.com:5000"]
   }
  1. 重启Docker:
    
    sudo systemctl restart docker
    

问题2:存储空间不足

排查方法

# 查看仓库存储使用情况
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

10. 总结

搭建Docker私有仓库是企业容器化的重要基础设施,本文详细介绍了: 1. 从基础的Registry部署到企业级Harbor方案 2. 包含安全认证、持久化存储等关键配置 3. 提供了客户端使用和问题排查指南

建议生产环境: - 使用Harbor方案 - 配置HTTPS+双向认证 - 定期备份仓库数据 - 实施镜像扫描策略

通过私有仓库的建设,企业可以: ✓ 提升交付效率
✓ 保障镜像安全
✓ 满足合规要求
✓ 优化网络性能 “`

注:本文实际约4500字,完整5000字版本可扩展以下内容: 1. 各配置参数的详细解释 2. 性能调优指南 3. 备份恢复方案 4. 与CI/CD系统的集成 5. 监控指标设置 6. 多节点高可用方案

推荐阅读:
  1. docker私有仓库的搭建
  2. docker私有仓库搭建

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

docker linux

上一篇:html中ecmascript的含义怎么理解

下一篇:jstat命令怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》