专业编程基础技术教程

网站首页 > 基础教程 正文

docker之安装部署Harbor docker安装部署windows

ccvgpt 2024-10-12 14:15:24 基础教程 10 ℃

在现代软件开发和部署环境中,Harbor 作为一个企业级的容器镜像仓库,提供了高效、安全的镜像管理解决方案。通过Docker部署Harbor,可以轻松构建私有镜像仓库,满足企业对镜像存储、管理和安全性的需求。本文将详细介绍在Docker中安装和部署Harbor的步骤,包括环境准备、软件下载与配置、启动服务、访问与使用等各个环节。每一步骤均配有详尽的解释和示例,确保读者能够顺利完成Harbor的部署与配置。

目录

  1. 基本概念
  2. 准备环境
  3. 下载Harbor软件包
  4. 配置Harbor
  5. 启动Harbor
  6. 访问Harbor Web界面
  7. 配置Docker客户端访问Harbor
  8. 使用Harbor
  9. 常见问题与解决方案
  10. 配置示意图
  11. 总结

基本概念

Harbor简介

Harbor 是由VMware开源的企业级容器镜像仓库,具备以下核心功能:

docker之安装部署Harbor docker安装部署windows

  • 镜像管理:支持Docker镜像的存储、管理和分发。
  • 角色与权限管理:细粒度的访问控制,确保镜像的安全性。
  • 漏洞扫描:集成Clair等漏洞扫描工具,确保镜像的安全性。
  • 高可用性:支持多节点部署,保证服务的稳定性和可靠性。
  • 审计日志:记录用户操作和系统事件,便于审计和追踪。

Docker简介

Docker 是一种开源的容器化平台,通过将应用程序及其依赖打包到容器中,实现跨平台的一致性部署和运行。Docker Compose 则是一种用于定义和运行多容器Docker应用的工具,通过配置文件简化复杂应用的部署过程。


准备环境

在开始安装和部署Harbor之前,需确保以下环境和依赖项已准备就绪:

  1. 操作系统:推荐使用CentOS 7或更高版本,其他Linux发行版亦可。
  2. Docker:Harbor依赖Docker来运行其各个组件。
  3. Docker Compose:用于管理和编排Harbor的多个容器服务。
  4. 系统资源CPU:至少2核处理器。内存:至少4GB RAM。存储:至少20GB的可用磁盘空间,用于存储镜像和数据。
  5. 网络配置端口开放:确保服务器的80(HTTP)、443(HTTPS)和其他Harbor所需端口未被防火墙阻挡。

安装Docker

若尚未安装Docker,可通过以下步骤进行安装:

# 卸载旧版本的Docker(如果存在)
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

# 安装必要的工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker的官方仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动并设置Docker开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 验证Docker安装
sudo docker run hello-world

安装Docker Compose

Docker Compose用于定义和运行多容器Docker应用。安装步骤如下:

# 下载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

# 创建符号链接(可选)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 验证Docker Compose安装
docker-compose --version

检查系统资源和依赖

确保系统满足Harbor的最低资源需求,并检查相关依赖项是否已安装:

# 检查CPU和内存
lscpu
free -m

# 检查Docker和Docker Compose版本
docker --version
docker-compose --version

下载Harbor软件包

Harbor的软件包包含所有必要的配置文件和Docker Compose脚本,便于快速部署。下载步骤如下:

  1. 访问Harbor官方网站或GitHub仓库:前往 Harbor Releases 页面,下载最新稳定版本的Harbor软件包。
  2. 下载软件包:以Harbor v2.6.0为例,执行以下命令下载并解压:
# 进入下载目录
cd /opt

# 下载Harbor软件包(替换为最新版本的下载链接)
wget https://github.com/goharbor/harbor/releases/download/v2.6.0/harbor-online-installer-v2.6.0.tgz

# 解压软件包
tar xvf harbor-online-installer-v2.6.0.tgz

# 进入解压后的目录
cd harbor

重要提示

  • 版本选择:确保下载的是最新的稳定版本,以获取最新的功能和安全更新。
  • 文件完整性:建议验证下载文件的SHA256哈希值,确保文件未被篡改。

配置Harbor

配置Harbor是部署过程中的关键步骤,涉及修改配置文件以满足具体需求。以下是详细步骤:

修改harbor.yml配置文件

在解压后的Harbor目录中,找到并编辑 harbor.yml文件:

sudo vi harbor.yml

主要配置项说明

配置项

描述

hostname

Harbor服务器的主机名或IP地址。

http

配置HTTP访问参数,包括端口号。

https

配置HTTPS访问参数,包括证书路径和私钥路径。

harbor_admin_password

Harbor管理员账号的初始密码。

data_volume

Harbor数据存储目录路径。

log_volume

Harbor日志存储目录路径。

database

配置Harbor的数据库连接信息。

clair

配置Clair漏洞扫描服务的参数。

chartmuseum

配置Chartmuseum用于Helm Chart存储的参数。

示例配置

以下是 harbor.yml文件的关键配置示例:

# hostname of Harbor, the default is localhost
hostname: harbor.example.com

# http related configs
http:
  port: 80

# https related configs, only when HTTPS is enabled
https:
  port: 443
  certificate: /etc/harbor/ssl/harbor.example.com.crt
  private_key: /etc/harbor/ssl/harbor.example.com.key

# harbor admin password
harbor_admin_password: Harbor12345

# data storage path
data_volume: /data/harbor

# log storage path
log_volume: /var/log/harbor

# database configs
database:
  password: root123

# Clair configs
clair:
  updaters_interval: 12

# Chartmuseum configs
chartmuseum:
  enabled: true

详细说明

  • hostname:设置Harbor的访问域名或IP地址。重要提示:确保此域名已正确解析到服务器IP,且在SSL证书中包含此域名。
  • HTTP和HTTPS配置
    • HTTP:配置HTTP访问端口,默认为80。若只使用HTTP,可忽略HTTPS部分。
    • HTTPS:配置HTTPS访问端口及证书路径。重要提示:建议启用HTTPS,以确保数据传输的安全性。
  • 管理员密码:设置Harbor管理员账号的初始密码。重要提示:使用复杂密码,避免使用弱密码以提升安全性。
  • 数据与日志存储路径:指定Harbor数据和日志的存储目录,确保有足够的磁盘空间。重要提示:最好将数据和日志存储在不同的磁盘分区,以提升性能和安全性。
  • 数据库配置:配置Harbor使用的数据库信息,包括密码。重要提示:保护数据库密码,避免泄露。
  • Clair漏洞扫描:配置Clair的更新间隔,增强镜像安全性。
  • Chartmuseum配置:启用Chartmuseum用于存储Helm Chart,便于Kubernetes应用的部署和管理。

配置SSL/TLS证书

如果启用HTTPS,需要准备SSL/TLS证书和私钥,并将其放置在指定目录:

# 创建SSL目录
sudo mkdir -p /etc/harbor/ssl

# 复制证书和私钥文件
sudo cp /path/to/your/certificate.crt /etc/harbor/ssl/harbor.example.com.crt
sudo cp /path/to/your/private.key /etc/harbor/ssl/harbor.example.com.key

# 设置文件权限
sudo chmod 600 /etc/harbor/ssl/harbor.example.com.key
sudo chown root:root /etc/harbor/ssl/harbor.example.com.key

重要提示

  • 证书合法性:使用由受信任的证书颁发机构(CA)签发的证书,确保浏览器和Docker客户端信任。
  • 私钥安全:妥善保管私钥文件,防止未经授权的访问。

启动Harbor

配置完成后,即可启动Harbor服务。Harbor通过Docker Compose管理多个容器服务,包括数据库、Clair、Chartmuseum等。

启动命令

在Harbor解压目录下,执行以下命令启动服务:

sudo docker-compose up -d

命令解释

  • sudo:以超级用户权限运行命令,确保Docker能够正常启动和管理容器。
  • docker-compose up:启动Docker Compose定义的所有服务。
  • -d:以分离模式运行容器,后台运行。

启动过程监控

启动过程中,可以通过以下命令查看容器的运行状态:

sudo docker-compose ps

输出示例

      Name                    Command               State            Ports       
------------------------------------------------------------------------------------
harbor-harbor-core      /harbor/core/main                Up      8080/tcp          
harbor-harbor-jobservice /harbor/jobservice/main        Up      8081/tcp          
harbor-harbor-registry /etc/registry/config.yml       Up      5000/tcp, 5001/tcp   
harbor-harbor-portal    /harbor/portal/main             Up      80/tcp            
harbor-harbor-db        docker-entrypoint.sh mysqld     Up      3306/tcp          
harbor-harbor-log       /harbor/log/main                Up      127.0.0.1:1514->514/tcp
harbor-harbor-redis     docker-entrypoint.sh redis ...   Up      6379/tcp          
harbor-harbor-clair     /clair ...                       Up      6060/tcp          

常见问题

  • 容器未启动:检查 docker-compose.yml文件是否正确配置,查看错误日志以获取详细信息。
  • sudo docker-compose logs
  • 端口冲突:确保Harbor配置文件中指定的端口未被其他服务占用。

访问Harbor Web界面

Harbor启动成功后,可以通过浏览器访问其Web界面,进行后续管理和配置。

访问步骤

  1. 打开浏览器:在浏览器地址栏输入Harbor的URL,例如 http://harbor.example.com 或 https://harbor.example.com。
  2. 初始登录:使用 admin账号和在 harbor.yml中设置的密码登录。
  3. 首次登录配置:首次登录时,可能需要进行一些初始配置,如项目创建、用户管理等。

示例访问

  • HTTP访问:http://harbor.example.com
  • HTTPS访问:https://harbor.example.com

重要提示

  • 安全性:强烈建议启用HTTPS,确保数据传输的加密和服务器身份的验证。
  • 管理员密码:初始密码应为强密码,建议登录后立即更改管理员密码。

配置Docker客户端访问Harbor

为了使Docker客户端能够推送和拉取镜像到Harbor,需要在Docker客户端进行相应的配置。

修改Docker配置文件

根据Harbor是否启用了HTTPS,配置步骤有所不同。

1.启用HTTPS(推荐)

如果已启用HTTPS,确保Docker客户端信任Harbor的SSL证书。对于自签名证书,需将CA证书添加到Docker客户端的信任存储中。

2.未启用HTTPS(不推荐)

若未启用HTTPS,需要在Docker客户端配置文件中添加Harbor地址为不安全的注册中心。

编辑Docker配置文件

修改或创建 /etc/docker/daemon.json 文件,添加以下内容:

{
  "insecure-registries": ["harbor.example.com"]
}

命令解释

  • "insecure-registries":指定不安全的注册中心地址,允许通过HTTP进行通信。

重启Docker服务

sudo systemctl restart docker

验证配置

执行以下命令,确保Docker客户端能够识别Harbor仓库:

docker login harbor.example.com

输入管理员账号和密码,若登录成功,说明配置正确。

重要提示

  • 安全性风险:使用不安全的注册中心存在中间人攻击风险,强烈建议启用HTTPS
  • 证书管理:确保Harbor的SSL证书已正确配置,并由受信任的CA签发,避免Docker客户端出现证书信任问题。

使用Harbor

部署和配置完成后,可以通过Harbor的Web界面和Docker命令行工具,进行镜像的管理和操作。

创建项目

  1. 登录Harbor Web界面:使用管理员账号登录。
  2. 创建新项目:点击“项目”菜单。点击“新建项目”按钮。填写项目名称和描述,选择项目的访问级别(公开或私有)。点击“确定”完成项目创建。

上传镜像到Harbor

使用Docker命令行将本地镜像推送到Harbor仓库:

1.标记镜像

将本地镜像标记为Harbor仓库中的镜像:

docker tag your-image:tag harbor.example.com/project-name/your-image:tag

2.登录Harbor

docker login harbor.example.com

输入Harbor的用户名和密码。

3.推送镜像

docker push harbor.example.com/project-name/your-image:tag

示例

docker tag nginx:latest harbor.example.com/myproject/nginx:latest
docker login harbor.example.com
docker push harbor.example.com/myproject/nginx:latest

拉取镜像从Harbor

使用Docker命令行从Harbor仓库拉取镜像:

docker pull harbor.example.com/project-name/your-image:tag

示例

docker pull harbor.example.com/myproject/nginx:latest

管理镜像

在Harbor的Web界面,可以对镜像进行以下管理操作:

  • 浏览镜像:查看项目中的所有镜像和标签。
  • 删除镜像:移除不再需要的镜像和标签。
  • 复制镜像:将镜像复制到其他项目或其他Harbor实例。
  • 扫描镜像漏洞:通过集成的漏洞扫描工具,检查镜像的安全性。

配置访问权限

Harbor支持基于角色的访问控制,确保不同用户拥有不同的权限:

  1. 创建用户
  2. 在“用户”菜单中,点击“新建用户”。
  3. 填写用户名、密码和邮箱,选择用户角色(如开发者、项目管理员等)。
  4. 分配项目角色
  5. 在“项目”菜单中,选择特定项目。
  6. 点击“成员”标签,添加用户并分配角色(如管理员、开发者、访客)。

重要提示

  • 镜像命名规范:遵循Harbor的镜像命名规范,确保镜像名称和标签的规范性,便于管理和查找。
  • 安全扫描:定期进行镜像漏洞扫描,确保容器镜像的安全性。
  • 权限管理:合理分配用户权限,确保敏感镜像的安全性和访问控制。

常见问题与解决方案

在安装和使用Harbor过程中,可能会遇到一些常见问题。以下列出这些问题及其解决方案,帮助您快速排查和修复。

问题1:Harbor服务未启动或启动失败

可能原因:

  • 配置文件错误:harbor.yml中的配置项存在错误。
  • 端口被占用:Harbor配置的端口(如80、443)已被其他服务占用。
  • 证书文件缺失或错误:HTTPS配置中指定的证书路径不正确或证书文件损坏。

解决方案:

  1. 检查配置文件语法
  2. 使用YAML语法检查工具,确保 harbor.yml文件格式正确。
  3. 查看Docker Compose日志
  4. sudo docker-compose logs
  5. 分析日志中出现的错误信息,针对性修复。
  6. 检查端口占用
  7. sudo netstat -tuln | grep -E "80|443"
  8. 若端口被占用,停止占用服务或修改Harbor配置中的端口号。
  9. 验证证书文件
  10. 确认证书和私钥文件存在且路径正确:
  11. ls -l /etc/harbor/ssl/harbor.example.com.crt ls -l /etc/harbor/ssl/harbor.example.com.key
  12. 若文件缺失或损坏,重新生成或获取正确的证书文件。

问题2:Docker客户端无法登录Harbor

可能原因:

  • 不安全的注册中心配置:未启用HTTPS或配置了不安全的注册中心。
  • 证书不受信任:使用自签名证书,Docker客户端未信任该证书。
  • 用户名或密码错误:输入的Harbor管理员账号或密码不正确。

解决方案:

  1. 检查HTTPS配置
  2. 确保Harbor已正确配置HTTPS,并使用受信任的证书。
  3. 信任自签名证书
  4. 若使用自签名证书,需将CA证书添加到Docker客户端的信任存储中:
  5. sudo mkdir -p /etc/docker/certs.d/harbor.example.com sudo cp /path/to/ca.crt /etc/docker/certs.d/harbor.example.com/ca.crt sudo systemctl restart docker
  6. 验证登录凭证
  7. 确认输入的用户名和密码正确,若忘记密码,可通过Harbor的用户管理功能重置密码。

问题3:推送镜像失败

可能原因:

  • 镜像命名不规范:未按照Harbor的镜像命名规则进行标记。
  • 权限不足:当前用户在目标项目中无推送权限。
  • 网络问题:客户端与Harbor服务器之间存在网络连接问题。

解决方案:

  1. 检查镜像命名
  2. 确保镜像命名符合 harbor.example.com/project-name/image:tag格式。
  3. docker tag your-image:tag harbor.example.com/project-name/your-image:tag
  4. 确认用户权限
  5. 登录Harbor Web界面,检查当前用户在目标项目中的角色,确保具有推送权限。
  6. 测试网络连接
  7. 从Docker客户端执行以下命令,测试与Harbor服务器的连接:
  8. ping harbor.example.com
  9. 或使用 curl测试端口连通性:
  10. curl -I https://harbor.example.com

问题4:Harbor Web界面访问缓慢或无响应

可能原因:

  • 服务器资源不足:CPU或内存资源紧张,导致Harbor服务响应慢。
  • 网络延迟:客户端与服务器之间的网络延迟较高。
  • 日志文件过大:Harbor日志文件过大,影响服务性能。

解决方案:

  1. 检查服务器资源使用情况
  2. top free -m df -h
  3. 如资源不足,考虑升级服务器硬件或优化Harbor服务。
  4. 优化网络配置
  5. 确保网络连接稳定,减少网络延迟。
  6. 清理日志文件
  7. 定期清理或轮转Harbor的日志文件,避免日志文件过大。
  8. sudo truncate -s 0 /var/log/harbor/*.log

问题5:镜像拉取速度慢

可能原因:

  • 带宽限制:服务器或客户端带宽不足。
  • Harbor服务器负载高:同时处理大量镜像推拉请求,导致响应变慢。
  • 存储性能低:Harbor的数据存储后端性能不足,影响镜像读取速度。

解决方案:

  1. 优化带宽使用
  2. 确保服务器和客户端具有足够的网络带宽,避免网络拥堵。
  3. 分布式部署
  4. 考虑部署多个Harbor实例,分担负载,提升服务性能。
  5. 提升存储性能
  6. 使用高性能存储设备(如SSD),提高Harbor的数据读写速度。

重要提示

  • 定期备份:定期备份Harbor的配置文件、数据库和存储数据,防止数据丢失。
  • 监控与日志:通过监控工具和日志分析,实时了解Harbor的运行状态,及时发现并解决问题。
  • 安全更新:保持Harbor和Docker的最新版本,及时应用安全补丁,保障系统安全。

解释

  1. 准备环境:安装Docker和Docker Compose,确保系统资源和依赖满足Harbor的需求。
  2. 下载Harbor软件包:从官方渠道获取最新的Harbor安装包,并解压到指定目录。
  3. 配置Harbor:修改 harbor.yml文件,设置Harbor的主机名、端口、证书路径、管理员密码等参数。
  4. 启动Harbor:使用Docker Compose启动Harbor服务,确保所有容器正常运行。
  5. 访问Harbor Web界面:通过浏览器访问Harbor的Web界面,进行初始登录和配置。
  6. 配置Docker客户端:配置Docker客户端以访问Harbor仓库,包括信任证书和设置不安全注册中心(如适用)。
  7. 使用Harbor:通过Web界面和Docker命令行工具进行镜像管理和操作。
  8. 常见问题与解决方案:解决部署和使用过程中遇到的常见问题,确保Harbor的稳定运行。
  9. 完成部署:部署和配置完成,Harbor已可正常使用。

总结

通过本文的详细指导,您已经了解了在Docker中安装和部署Harbor的完整流程。从环境准备、软件下载与配置,到启动服务、访问Web界面、配置Docker客户端,以及后续的镜像管理与问题排查,每一步均提供了详细的解释和实用的示例。以下是本文的关键要点总结:

关键要点

  • 环境准备:确保服务器具备安装Docker和Docker Compose的基础环境,满足Harbor的资源和依赖要求。
  • 软件下载与配置:从官方渠道获取Harbor安装包,解压并配置 harbor.yml文件,设置关键参数如主机名、端口、证书路径和管理员密码。
  • 启动与验证:使用Docker Compose启动Harbor服务,确保所有容器正常运行,并通过浏览器访问Web界面进行初始配置和验证。
  • Docker客户端配置:根据Harbor的访问协议(HTTP或HTTPS),配置Docker客户端以便于推送和拉取镜像。
  • 镜像管理与操作:通过Harbor的Web界面和Docker命令行工具,进行镜像的上传、下载、管理和权限控制。
  • 问题排查与解决:掌握常见问题的原因和解决方案,确保Harbor的稳定运行和高效管理。

重要提示

  • 安全性:始终启用HTTPS,确保数据传输的安全性和服务器身份的验证。使用强密码和适当的访问控制策略,保护Harbor的镜像和配置。
  • 定期备份:定期备份Harbor的配置文件、数据库和镜像数据,防止数据丢失和配置错误带来的影响。
  • 监控与维护:通过监控工具实时监控Harbor的运行状态,及时发现和解决潜在问题,确保服务的高可用性和稳定性。
  • 持续更新:保持Harbor、Docker和相关依赖项的最新版本,及时应用安全补丁和功能更新,提升系统的安全性和性能。

通过系统地学习和应用本文提供的步骤和建议,您将能够高效且安全地在Docker环境中安装和部署Harbor,构建一个高效、可靠的私有镜像仓库,满足企业级应用的需求。


重要提示

  • 证书管理:确保SSL/TLS证书的合法性和安全性,避免使用过期或自签名证书,除非在受控的测试环境中。
  • 权限控制:合理分配Harbor用户的权限,确保敏感操作和数据仅对授权用户开放。
  • 资源优化:根据实际使用情况,优化服务器的资源配置,确保Harbor服务的高效运行。
  • 定期审计:通过Harbor的审计日志功能,定期审查用户操作和系统事件,确保系统的合规性和安全性。

通过遵循上述指南,您将能够在Docker中成功安装和部署Harbor,构建一个高效、安全的容器镜像管理平台,提升团队的开发和运维效率。

Tags:

最近发表
标签列表