简介
Harbor 是一个开源的企业级容器镜像仓库,它提供了一个安全可靠的方式来存储和分发 Docker 镜像。Harbor 由 VMware 公司发起,旨在满足企业级容器镜像管理的需求,并支持 Docker 镜像以及 Helm Chart 的存储和分发。
以下是 Harbor 镜像仓库的一些主要特性和功能:
- 安全性: Harbor 提供了强大的安全性功能,包括用户身份验证、访问控制和审计。它支持 LDAP、AD 等身份验证机制,使管理员能够更好地控制用户和团队的访问权限。
- 复制和同步: Harbor 支持镜像仓库之间的复制和同步,这使得在多个地理位置部署 Harbor 实例变得更加容易。这对于分布式团队或跨多个数据中心的部署非常有用。
- 图形用户界面(GUI): Harbor 提供了直观的用户界面,方便用户浏览和管理存储在仓库中的镜像和 Helm Chart。通过图形界面,用户可以更容易地执行操作,而无需使用命令行。
- 自动化构建: Harbor 可以与 CI/CD 工具集成,支持自动构建和推送镜像。这有助于将构建过程与镜像仓库集成,使整个持续集成和持续交付(CI/CD)流水线更加顺畅。
- 漏洞扫描: Harbor 集成了漏洞扫描工具,可以帮助用户发现和解决存储在仓库中的镜像中可能存在的漏洞。这有助于提高容器镜像的安全性。
- 多租户支持: Harbor 支持多租户架构,允许不同的团队或项目在同一个 Harbor 实例上创建和管理他们自己的私有镜像仓库。
总的来说,Harbor 提供了一个强大而灵活的解决方案,帮助企业更好地管理和安全地分发容器镜像。这对于采用容器化技术的组织来说是一个有价值的工具,尤其是在大规模部署和跨多个团队协作的环境中。
本文选择的最新版v2.9.0进行部署,以下是Harbor包含的组件:
组件 |
功能 |
nginx |
Nginx 是一个高性能的Web服务器和反向代理服务器,用于处理 Harbor 的 HTTP 请求,提供负载均衡和安全性。 |
harbor-jobservice |
harbor-jobservice是 Harbor 的作业服务组件,负责处理一些异步任务,例如复制和同步镜像仓库、删除镜像等。 |
harbor-core |
harbor-core 是 Harbor 的核心组件,负责存储和管理 Docker 镜像,提供仓库的核心功能。 |
harbor-portal |
harbor-portal 提供 Harbor 的用户界面,通过 Web 界面允许用户与 Harbor 交互,浏览、搜索和管理镜像以及执行其他操作。 |
harbor-db |
harbor-db 是 Harbor 的数据库容器,负责存储和管理 Harbor 仓库的元数据、配置信息以及用户认证等数据。 |
redis |
Redis 是一个内存数据库,用作缓存系统,提高 Harbor 的性能和响应速度。 |
registry |
registry 是一个 Docker 镜像仓库,负责存储和管理 Docker 镜像。 |
registryctl |
registryctl 是 Harbor 的 Registry 控制器,用于执行与 Docker 镜像仓库相关的管理任务。 |
harbor-log |
harbor-log 容器负责存储 Harbor 的日志信息,记录各种活动和事件,以便后续的审计和故障排除。 |
Harbor安装先决条件
硬件
下表列出了部署 Harbor 的最低和推荐硬件配置。
资源 |
最低限度 |
推荐 |
中央处理器 |
2个CPU |
4个CPU |
内存 |
4GB |
8GB |
磁盘 |
40GB |
160GB |
软件
下表列出了目标主机上必须安装的软件版本。
软件 |
版本 |
Docker引擎 |
版本 17.06.0-ce+ 或更高版本 |
Docker 组合 |
docker-compose (v1.18.0+) 或 docker compose v2 (docker-compose-plugin) |
开放式SSL |
最新的优先 |
网络端口
Harbor 要求目标主机上打开以下端口。
端口 |
协议 |
描述 |
443 |
HTTPS |
Harbor 门户和核心 API 接受此端口上的 HTTPS 请求。您可以在配置文件中更改此端口。 |
4443 |
HTTPS |
连接到 Harbor 的 Docker Content Trust 服务。您可以在配置文件中更改此端口。 |
80 |
HTTP协议 |
Harbor 门户和核心 API 接受此端口上的 HTTP 请求。您可以在配置文件中更改此端口。 |
部署方式
- 在线部署程序:在线部署程序从 Docker hub 下载 Harbor 镜像。因此,安装程序的尺寸非常小。
- 离线部署程序:如果部署 Harbor 的主机没有连接到 Internet,请使用离线部署程序。离线部署程序包含预构建的映像,因此它比在线安装程序大。
在线和离线安装程序的安装过程几乎相同,由于服务器不能上网,这里是离线部署的操作。
开始部署
1.首先安装Docker和Docker Compose:
# 安装docker wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install docker-ce -y systemctl start docker systemctl enable docker # 安装docker-compose curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-compose --version
2.下载Harbor
选择的最新版v2.9.0进行部署
# 创建一个目录用于存储Harbor的配置文件和数据 sudo mkdir -p /data/harbor # 下载并解压Harbor的安装包 curl -L https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-online-installer-v2.9.0.tgz -o harbor.tgz tar xvf harbor.tgz -C /data/harbor # 进入Harbor安装目录 cd /data/harbor/harbor # 复制模板配置文件 cp harbor.yml.tmpl harbor.yml
3.配置Harbor
# 编辑harbor.yml文件,设置Harbor的主机名、管理员密码、证书等信息。 # 修改以下配置项 #域名 hostname: your-harbor-domain #管理员密码 harbor_admin_password: your-password #证书,如果有证书就配置,没有先禁用 certificate: /data/harbor/ssl/root.crt private_key: /data/harbor/ssl/private_key.pem external_url: https://your-harbor-domain:8433 #数据存储路径 data_volume: /data/harbor/data #完整配置 egrep -v "^$|#" harbor.yml hostname: your-harbor-domain http: port: 80 harbor_admin_password: Harbor12345 database: password: root123 max_idle_conns: 100 max_open_conns: 900 conn_max_lifetime: 5m conn_max_idle_time: 0 data_volume: /data/harbor/data trivy: ignore_unfixed: false skip_update: false offline_scan: false security_check: vuln insecure: false jobservice: max_job_workers: 10 job_loggers: - STD_OUTPUT - FILE notification: webhook_job_max_retry: 3 log: level: info local: rotate_count: 50 rotate_size: 200M location: /var/log/harbor _version: 2.9.0 proxy: http_proxy: https_proxy: no_proxy: components: - core - jobservice - trivy upload_purging: enabled: true age: 168h interval: 24h dryrun: false cache: enabled: false expire_hours: 24
4.安装Harbor:
# 执行安装脚本 ./install.sh
这将根据harbor.yml配置文件中的设置安装并配置Harbor。
5.访问Harbor Web界面
安装完成后,你可以通过浏览器访问Harbor的Web界面。默认的地址是http://your-harbor-domain。使用刚才配置的管理员账户和密码登录。默认账号密码是admin Harbor12345
上传下载Harbor镜像
1.配置http镜像仓库可信任 如果不添加此配置,login时会报Error response from daemon: Get https://192.168.1.101/v2/: dial tcp 192.168.1.1:443: connect: connection refused /etc/docker/daemon.json { "insecure-registries": ["192.168.1.101"] } systemctl restart docker 2.打标签 docker tag nginx 192.168.1.101/dev/nginx 3.登录 docker login 192.168.1.101 4.上传 docker push 192.168.1.101/dev/nginx 5.下载 docker pull 192.168.1.101/dev/nginx
Harbor常用操作
1.启停命令
# 停止Harbor docker-compose stop # 启动Harbor docker-compose start # 重启Harbor docker-compose restart
2.重新配置Harbor命令
要重新配置 Harbor,请执行以下步骤。
1.停止Harbor docker-compose down -v 2.更新harbor.yaml vim harbor.yml 3.运行prepare脚本以填充配置 ./prepare 要重新配置 Harbor 以安装 Trivy,请在命令中包含该组件prepare ./prepare --with-trivy 4.重新创建并启动Harbor实例 docker-compose up -d
3.其他命令
删除Harbor的容器,但保留文件系统中的所有图像数据和Harbor的数据库文件:
docker-compose down -v
在执行干净的重新安装之前删除 Harbor 数据库和图像数据:
rm -r /data/harbor/data/database rm -r /data/harbor/data/registry rm -r /data/harbor/data/redis
https://goharbor.io/docs/2.9.0/
官方文档