跳转至

Harbor 云原生制品库

概要: Harbor是云原生时代的开源制品库,当然也可以作为Docker Registry。本文介绍Harbor在本地的部署和使用方式,测试平台RHEL 8.5。

创建时间: 2023.08.02 23:02:53

更新时间: 2023.08.03 00:09:06

部署Harbor

准备工作

  1. 安装Docker环境:
  2. CentOS安装Docker - Cloud Notes
  3. Ubuntu安装Docker - Cloud Notes
  4. 安装docker-compose工具: docker-compose工具使用 - Cloud Notes
  5. 硬件要求参考官网Harbor docs | Harbor Installation Prerequisites

获取Harbor安装包

Harbor的安装包分为离线安装版和在线安装版,鉴于GitHub感人的速度,此处选择使用在线安装版,具体的差异可以参考Harbor docs | Download the Harbor Installer
在GitHub的Releases · goharbor/harbor页面上获取在线安装包

配置安装环境

将下载的安装包解压并进入harbor目录

Bash
tar zxvf harbor-online-installer-v2.4.1.tgz
cd ./harbor
然后拷贝一份配置模版作为配置文件进行修改
Bash
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
由于本次安装主要在局域网进行,所以主要修改了如下内容

  1. 配置hostname部署机的IP,注意不能使用localhost或者127.0.0.1
  2. 配置http-porthttp端口
  3. 配置harbor_admin_password管理员密码
  4. 配置database-password数据库密码
  5. 配置data_volume数据存放位置
  6. 配置log-local-location日志文件的存放位置

修改简化后的示例配置文件harbor.yml如下

YAML
hostname: 192.168.1.123

http:
  port: 5000

harbor_admin_password: my_admin_pw

database:
  password: my_db_pw
  max_idle_conns: 100
  max_open_conns: 900

data_volume: /mnt/sdb/data/docker/harbor/data

trivy:
  ignore_unfixed: false
  skip_update: false
  insecure: false

jobservice:
  max_job_workers: 10

notification:
  webhook_job_max_retry: 10

chart:
  absolute_url: disabled

log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /mnt/sdb/data/docker/harbor/log

_version: 2.4.0

proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy

安装Harbor

harbor.yml配置完毕后,运行harbor/install.sh即可进行安装

Bash
./install.sh
安装完毕后,可以看到如下提示

使用Harbor作为Docker Registry

登入Harbor

打开http://192.168.1.123:5000/页面,即可看到登录页面

使用上一步配置harbor.yml中的帐号admin和对应密码,即可登录

本地Docker配置

Bash
vim /etc/docker/daemon.json
追加如下内容
JSON
1
2
3
4
5
{
  "insecure-registries": [
      "192.168.1.123:5000"
  ]
}
然后重启Docker
Bash
systemctl daemon-reload
systemctl restart docker

测试Harbor的Docker Registry功能

首先使用Harbor的账号密码登录Docker Registry

Bash
docker login http://192.168.1.123:5000/
看到如下提示即代表登录成功

首先在Docker Hub上拉取测试的hello-world镜像
Bash
docker pull hello-world

查看镜像信息
Bash
docker images | grep hello-world

按照Harbor页面提示,重新打标签并推送到Harbor的示例library项目上
Bash
docker tag hello-world:latest 192.168.1.123:5000/library/hello-world:latest
docker push 192.168.1.123:5000/library/hello-world:latest
再次查看Harbor页面的示例library项目,发现已经推送成功

参考