网站首页 > 基础教程 正文
在现代软件开发和部署环境中,Harbor 作为一个企业级的容器镜像仓库,提供了高效、安全的镜像管理解决方案。通过Docker部署Harbor,可以轻松构建私有镜像仓库,满足企业对镜像存储、管理和安全性的需求。本文将详细介绍在Docker中安装和部署Harbor的步骤,包括环境准备、软件下载与配置、启动服务、访问与使用等各个环节。每一步骤均配有详尽的解释和示例,确保读者能够顺利完成Harbor的部署与配置。
目录
- 基本概念
- 准备环境
- 下载Harbor软件包
- 配置Harbor
- 启动Harbor
- 访问Harbor Web界面
- 配置Docker客户端访问Harbor
- 使用Harbor
- 常见问题与解决方案
- 配置示意图
- 总结
基本概念
Harbor简介
Harbor 是由VMware开源的企业级容器镜像仓库,具备以下核心功能:
- 镜像管理:支持Docker镜像的存储、管理和分发。
- 角色与权限管理:细粒度的访问控制,确保镜像的安全性。
- 漏洞扫描:集成Clair等漏洞扫描工具,确保镜像的安全性。
- 高可用性:支持多节点部署,保证服务的稳定性和可靠性。
- 审计日志:记录用户操作和系统事件,便于审计和追踪。
Docker简介
Docker 是一种开源的容器化平台,通过将应用程序及其依赖打包到容器中,实现跨平台的一致性部署和运行。Docker Compose 则是一种用于定义和运行多容器Docker应用的工具,通过配置文件简化复杂应用的部署过程。
准备环境
在开始安装和部署Harbor之前,需确保以下环境和依赖项已准备就绪:
- 操作系统:推荐使用CentOS 7或更高版本,其他Linux发行版亦可。
- Docker:Harbor依赖Docker来运行其各个组件。
- Docker Compose:用于管理和编排Harbor的多个容器服务。
- 系统资源:CPU:至少2核处理器。内存:至少4GB RAM。存储:至少20GB的可用磁盘空间,用于存储镜像和数据。
- 网络配置:端口开放:确保服务器的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脚本,便于快速部署。下载步骤如下:
- 访问Harbor官方网站或GitHub仓库:前往 Harbor Releases 页面,下载最新稳定版本的Harbor软件包。
- 下载软件包:以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界面,进行后续管理和配置。
访问步骤
- 打开浏览器:在浏览器地址栏输入Harbor的URL,例如 http://harbor.example.com 或 https://harbor.example.com。
- 初始登录:使用 admin账号和在 harbor.yml中设置的密码登录。
- 首次登录配置:首次登录时,可能需要进行一些初始配置,如项目创建、用户管理等。
示例访问
- 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命令行工具,进行镜像的管理和操作。
创建项目
- 登录Harbor Web界面:使用管理员账号登录。
- 创建新项目:点击“项目”菜单。点击“新建项目”按钮。填写项目名称和描述,选择项目的访问级别(公开或私有)。点击“确定”完成项目创建。
上传镜像到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支持基于角色的访问控制,确保不同用户拥有不同的权限:
- 创建用户:
- 在“用户”菜单中,点击“新建用户”。
- 填写用户名、密码和邮箱,选择用户角色(如开发者、项目管理员等)。
- 分配项目角色:
- 在“项目”菜单中,选择特定项目。
- 点击“成员”标签,添加用户并分配角色(如管理员、开发者、访客)。
重要提示
- 镜像命名规范:遵循Harbor的镜像命名规范,确保镜像名称和标签的规范性,便于管理和查找。
- 安全扫描:定期进行镜像漏洞扫描,确保容器镜像的安全性。
- 权限管理:合理分配用户权限,确保敏感镜像的安全性和访问控制。
常见问题与解决方案
在安装和使用Harbor过程中,可能会遇到一些常见问题。以下列出这些问题及其解决方案,帮助您快速排查和修复。
问题1:Harbor服务未启动或启动失败
可能原因:
- 配置文件错误:harbor.yml中的配置项存在错误。
- 端口被占用:Harbor配置的端口(如80、443)已被其他服务占用。
- 证书文件缺失或错误:HTTPS配置中指定的证书路径不正确或证书文件损坏。
解决方案:
- 检查配置文件语法
- 使用YAML语法检查工具,确保 harbor.yml文件格式正确。
- 查看Docker Compose日志
- sudo docker-compose logs
- 分析日志中出现的错误信息,针对性修复。
- 检查端口占用
- sudo netstat -tuln | grep -E "80|443"
- 若端口被占用,停止占用服务或修改Harbor配置中的端口号。
- 验证证书文件
- 确认证书和私钥文件存在且路径正确:
- ls -l /etc/harbor/ssl/harbor.example.com.crt ls -l /etc/harbor/ssl/harbor.example.com.key
- 若文件缺失或损坏,重新生成或获取正确的证书文件。
问题2:Docker客户端无法登录Harbor
可能原因:
- 不安全的注册中心配置:未启用HTTPS或配置了不安全的注册中心。
- 证书不受信任:使用自签名证书,Docker客户端未信任该证书。
- 用户名或密码错误:输入的Harbor管理员账号或密码不正确。
解决方案:
- 检查HTTPS配置
- 确保Harbor已正确配置HTTPS,并使用受信任的证书。
- 信任自签名证书
- 若使用自签名证书,需将CA证书添加到Docker客户端的信任存储中:
- 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
- 验证登录凭证
- 确认输入的用户名和密码正确,若忘记密码,可通过Harbor的用户管理功能重置密码。
问题3:推送镜像失败
可能原因:
- 镜像命名不规范:未按照Harbor的镜像命名规则进行标记。
- 权限不足:当前用户在目标项目中无推送权限。
- 网络问题:客户端与Harbor服务器之间存在网络连接问题。
解决方案:
- 检查镜像命名
- 确保镜像命名符合 harbor.example.com/project-name/image:tag格式。
- docker tag your-image:tag harbor.example.com/project-name/your-image:tag
- 确认用户权限
- 登录Harbor Web界面,检查当前用户在目标项目中的角色,确保具有推送权限。
- 测试网络连接
- 从Docker客户端执行以下命令,测试与Harbor服务器的连接:
- ping harbor.example.com
- 或使用 curl测试端口连通性:
- curl -I https://harbor.example.com
问题4:Harbor Web界面访问缓慢或无响应
可能原因:
- 服务器资源不足:CPU或内存资源紧张,导致Harbor服务响应慢。
- 网络延迟:客户端与服务器之间的网络延迟较高。
- 日志文件过大:Harbor日志文件过大,影响服务性能。
解决方案:
- 检查服务器资源使用情况
- top free -m df -h
- 如资源不足,考虑升级服务器硬件或优化Harbor服务。
- 优化网络配置
- 确保网络连接稳定,减少网络延迟。
- 清理日志文件
- 定期清理或轮转Harbor的日志文件,避免日志文件过大。
- sudo truncate -s 0 /var/log/harbor/*.log
问题5:镜像拉取速度慢
可能原因:
- 带宽限制:服务器或客户端带宽不足。
- Harbor服务器负载高:同时处理大量镜像推拉请求,导致响应变慢。
- 存储性能低:Harbor的数据存储后端性能不足,影响镜像读取速度。
解决方案:
- 优化带宽使用
- 确保服务器和客户端具有足够的网络带宽,避免网络拥堵。
- 分布式部署
- 考虑部署多个Harbor实例,分担负载,提升服务性能。
- 提升存储性能
- 使用高性能存储设备(如SSD),提高Harbor的数据读写速度。
重要提示
- 定期备份:定期备份Harbor的配置文件、数据库和存储数据,防止数据丢失。
- 监控与日志:通过监控工具和日志分析,实时了解Harbor的运行状态,及时发现并解决问题。
- 安全更新:保持Harbor和Docker的最新版本,及时应用安全补丁,保障系统安全。
解释
- 准备环境:安装Docker和Docker Compose,确保系统资源和依赖满足Harbor的需求。
- 下载Harbor软件包:从官方渠道获取最新的Harbor安装包,并解压到指定目录。
- 配置Harbor:修改 harbor.yml文件,设置Harbor的主机名、端口、证书路径、管理员密码等参数。
- 启动Harbor:使用Docker Compose启动Harbor服务,确保所有容器正常运行。
- 访问Harbor Web界面:通过浏览器访问Harbor的Web界面,进行初始登录和配置。
- 配置Docker客户端:配置Docker客户端以访问Harbor仓库,包括信任证书和设置不安全注册中心(如适用)。
- 使用Harbor:通过Web界面和Docker命令行工具进行镜像管理和操作。
- 常见问题与解决方案:解决部署和使用过程中遇到的常见问题,确保Harbor的稳定运行。
- 完成部署:部署和配置完成,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,构建一个高效、安全的容器镜像管理平台,提升团队的开发和运维效率。
猜你喜欢
- 2024-10-12 Docker方式部署Nextcloud docker部署项目的两种方式
- 2024-10-12 一起学docker-可视化管理01-Portainer
- 2024-10-12 牛掰!Docker从入门到上手的终极指南,看这一篇文章就够了
- 2024-10-12 Docker进阶---使用网络 docker的网络连接方式
- 2024-10-12 开源&Docker :再说自动化了,一个docker搞定你90%的登录与签到
- 2024-10-12 干货分享:Docker实战中一些技巧 docker基础实战教程一:入门
- 2024-10-12 Linux 安装docker linux 安装docker 没图标
- 2024-10-12 跟我一起学docker(七)--网络 docker网络管理
- 2024-10-12 松勤软件测试:详解Docker,如何用portainer管理Docker容器
- 2024-10-12 Docker之6 网络管理 docker网络类型 以及特点
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)