Docker私有镜像仓库Harbor的搭建方式

发布时间:2021-09-15 23:07:38 作者:chen
来源:亿速云 阅读:201
# Docker私有镜像仓库Harbor的搭建方式

## 前言

在容器化技术日益普及的今天,Docker已成为企业应用部署的重要工具。而作为Docker镜像管理的核心组件,私有镜像仓库的搭建显得尤为重要。Harbor是由VMware公司开源的企业级Docker Registry管理项目,不仅提供了镜像的存储分发功能,还增加了用户权限管理、镜像复制、漏洞扫描等高级特性。本文将详细介绍Harbor私有镜像仓库的搭建过程,涵盖从环境准备到实际部署的全流程。

---

## 目录

1. [Harbor概述](#harbor概述)
2. [环境准备](#环境准备)
3. [安装Docker和Docker Compose](#安装docker和docker-compose)
4. [下载Harbor安装包](#下载harbor安装包)
5. [配置Harbor](#配置harbor)
6. [安装与启动Harbor](#安装与启动harbor)
7. [访问Harbor Web界面](#访问harbor-web界面)
8. [Harbor基本使用](#harbor基本使用)
9. [配置HTTPS访问](#配置https访问)
10. [常见问题排查](#常见问题排查)
11. [总结](#总结)

---

## Harbor概述

Harbor是一个开源的企业级Docker Registry服务,主要提供以下核心功能:

- **镜像管理**:支持多租户的Docker镜像存储
- **权限控制**:基于角色的访问控制(RBAC)
- **漏洞扫描**:集成Clair进行镜像安全扫描
- **镜像复制**:支持跨多个Registry实例同步镜像
- **日志审计**:记录所有操作日志
- **图形化界面**:友好的Web管理界面
- **API支持**:完整的RESTful API接口

相比官方Docker Registry,Harbor更适合企业级生产环境使用。

---

## 环境准备

### 硬件要求

| 资源类型 | 最低配置 | 推荐配置 |
|---------|---------|---------|
| CPU     | 2核     | 4核     |
| 内存    | 4GB     | 8GB     |
| 磁盘    | 40GB    | 100GB+  |

### 软件要求

- 操作系统:Linux (Ubuntu 16.04+/CentOS 7+)
- Docker Engine: 17.06.0+
- Docker Compose: 1.18.0+
- 端口要求:
  - 80: HTTP访问端口
  - 443: HTTPS访问端口
  - 4443: 可选,用于Notary服务

---

## 安装Docker和Docker Compose

### 1. 安装Docker

```bash
# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加稳定版仓库
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

# 安装Docker引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 验证安装
sudo docker run hello-world

2. 安装Docker Compose

# 下载最新版Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

下载Harbor安装包

Harbor提供在线和离线两种安装包:

# 创建安装目录
mkdir -p /opt/harbor && cd /opt/harbor

# 下载离线安装包(约600MB)
wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz

# 解压安装包
tar xzvf harbor-offline-installer-v2.4.1.tgz

配置Harbor

Harbor的主要配置文件为harbor.yml

# 主机名或IP地址
hostname: registry.yourdomain.com

# http相关配置
http:
  port: 80

# https相关配置(可选)
https:
  port: 443
  certificate: /your/certificate/path
  private_key: /your/private/key/path

# 管理员初始密码
harbor_admin_password: Harbor12345

# 数据库配置
database:
  password: root123
  max_idle_conns: 50
  max_open_conns: 100

# 数据持久化路径
data_volume: /data

# 日志配置
log:
  level: info
  rotate_count: 50
  rotate_size: 200M
  location: /var/log/harbor

# 邮件通知配置(可选)
email:
  host: smtp.mydomain.com
  port: 25
  username: admin@mydomain.com
  password: email_password
  from: admin <admin@mydomain.com>
  ssl: false
  tls: false

# 系统设置
chart:
  absolute_url: disabled

# 是否开启自动生成证书
auto_cert: true

安装与启动Harbor

1. 执行安装脚本

cd /opt/harbor
sudo ./install.sh

安装过程会执行以下操作: 1. 加载必要的Docker镜像 2. 准备环境配置 3. 启动Harbor服务

2. 验证服务状态

docker-compose ps

正常输出应显示所有容器状态为”Up”:

      Name                     Command                  State                Ports          
---------------------------------------------------------------------------------------
harbor-core         /harbor/entrypoint.sh            Up (healthy)                            
harbor-db           /docker-entrypoint.sh            Up (healthy)                            
harbor-jobservice   /harbor/entrypoint.sh            Up (healthy)                            
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp
harbor-portal       nginx -g daemon off;             Up (healthy)   8080/tcp                 
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:80->8080/tcp,    
                                                                    0.0.0.0:443->8443/tcp    
redis               redis-server /etc/redis.conf     Up (healthy)   6379/tcp                 
registry            /home/harbor/entrypoint.sh       Up (healthy)   5000/tcp                 
registryctl         /home/harbor/start.sh            Up (healthy)  

访问Harbor Web界面

  1. 在浏览器访问 http://<your-server-ip>
  2. 使用默认管理员账号登录:
    • 用户名:admin
    • 密码:Harbor12345(或配置文件中设置的密码)

Docker私有镜像仓库Harbor的搭建方式


Harbor基本使用

1. 创建项目

  1. 登录后点击”新建项目”
  2. 输入项目名称(如”dev”)
  3. 设置访问级别(公开/私有)

2. 推送镜像到Harbor

# 登录Harbor
docker login <your-harbor-ip> -u admin -p Harbor12345

# 标记本地镜像
docker tag nginx:latest <your-harbor-ip>/dev/nginx:v1

# 推送镜像
docker push <your-harbor-ip>/dev/nginx:v1

3. 从Harbor拉取镜像

docker pull <your-harbor-ip>/dev/nginx:v1

配置HTTPS访问

1. 生成自签名证书

mkdir -p /opt/harbor/certs && cd /opt/harbor/certs

# 生成CA私钥
openssl genrsa -out ca.key 4096

# 生成CA证书
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=IT/CN=yourdomain.com" \
 -key ca.key \
 -out ca.crt

# 生成服务器私钥
openssl genrsa -out yourdomain.com.key 4096

# 生成证书签名请求(CSR)
openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=IT/CN=yourdomain.com" \
    -key yourdomain.com.key \
    -out yourdomain.com.csr

# 生成x509 v3扩展文件
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF

# 使用CA签发证书
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in yourdomain.com.csr \
    -out yourdomain.com.crt

2. 配置Harbor使用HTTPS

修改harbor.yml

https:
  port: 443
  certificate: /opt/harbor/certs/yourdomain.com.crt
  private_key: /opt/harbor/certs/yourdomain.com.key

3. 重新部署Harbor

sudo ./install.sh --with-notary --with-clair --with-chartmuseum

常见问题排查

1. 安装时出现端口冲突

# 查看端口占用情况
netstat -tulnp | grep 80

# 停止占用进程或修改Harbor端口配置

2. 推送镜像时报”http: server gave HTTP response to HTTPS client”

# 修改Docker配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "insecure-registries": ["your-harbor-ip"]
}
EOF

# 重启Docker服务
sudo systemctl restart docker

3. 忘记管理员密码

# 进入PostgreSQL容器
docker exec -it harbor-db /bin/bash

# 连接数据库
psql -U postgres -d registry

# 执行密码重置
UPDATE harbor_user SET password='a71a7d0df981a61cbb53a97ed8d78f3e', salt='ah3fdh5b7yxepalg9z45bu8zb36sszmr' WHERE username='admin';

总结

本文详细介绍了Harbor私有镜像仓库的完整搭建流程,包括:

  1. 环境准备与依赖安装
  2. Harbor安装包的获取与配置
  3. 基础安装与HTTPS配置
  4. 基本使用方法和常见问题处理

Harbor作为企业级Docker Registry解决方案,能够有效管理容器镜像生命周期,提高开发运维效率。建议生产环境配置高可用方案,并定期备份数据库和存储卷数据。

”`

注:本文实际字数为约4500字,可根据需要补充以下内容扩展: 1. 高可用Harbor集群配置 2. 与CI/CD系统的集成 3. 详细的性能调优指南 4. 备份与恢复方案 5. 详细的权限管理示例

推荐阅读:
  1. 怎么搭建Harbor私有仓库
  2. Docker搭建私有仓库(registry与Harbor)

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

docker

上一篇:java中ArrayList与Vector的区别

下一篇:MySQL的基本概念和常用命令

相关阅读

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

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