# 2 Harbor安装

Harbor 的所有组件都在 Dcoker 中部署的,所以 Harbor 可使用 Docker Compose 快速部署。

首先安装 Docker,参考 Docker 基础教程 Docker 安装 (opens new window) ,新版的 Docker 中已经包含了 Docker Compose 。

Harbor 有两种安装方式:

  • 在线安装:从 Docker Hub下载Harbor相关镜像,因此安装软件包非常小。

  • 离线安装:安装包包含部署的相关镜像,因此安装包比较大。

# 2.1 生成https证书

如果不使用 https ,那就忽略此步骤。


下面是生成本地证书的步骤,待会 Harbor 页面的 https 的请求需要使用。

# 1 配置hosts

先在要安装 Harbor 的主机上配置一下 hosts 文件,我这里使用 harbor.local 作为局域网的域名来访问 Harbor 的主机,所以编辑 /etc/hosts 文件,添加如下内容,你自己根据想要的域名和自己的主机 IP 来配置。

192.168.0.104 harbor.local
1

后面用到 harbor.local ,你替换为你自己的就可以。

# 2 安装openssl

生成自签名证书需要用到 OpenSSL,下面是在 CentOS 和 Ubuntu 中的安装方式:

Ubuntu:

sudo apt update
sudo apt install openssl
1
2

CentOS:

sudo yum install openssl
1

# 3 生成CA证书私钥

openssl genrsa -out ca.key 4096
1

会生成一个 ca.key 文件。

# 4 生成CA证书

使用上面的CA证书私钥生成CA证书。

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.local.com" \
 -key ca.key \
 -out ca.crt
1
2
3
4

通过 ca.key 文件生成一个 crt 文件,CA 证书后面用来签署服务器证书。

# 5 生成服务器证书私钥

openssl genrsa -out harbor.local.key 4096
1

harbor.local 是你自己的域名,不过这里只是文件的名称,为了清晰的表示。

上面的命令会生成一个 harbor.local.key 文件。

# 6 生成签名请求文件

通过 harbor.local.key 生成签名请求文件 CSR:

openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.local" \
    -key harbor.local.key \
    -out harbor.local.csr
1
2
3
4

根据 harbor.local.key 文件生成 harbor.local.csr 文件。

上面指定了使用域名 harbor.local

# 7 生成x509 v3扩展文件

下面会生成一个 v3.ext 文件。

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=harbor.local
DNS.2=192.168.0.10
EOF
1
2
3
4
5
6
7
8
9
10
11

# 8 生成服务器证书

使用 v3.ext 为 Harbor 服务器生成证书:

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in harbor.local.csr \
    -out harbor.local.crt
1
2
3
4
5

最终生成了 harbor.local.crt

# 9 复制证书到指定位置

harbor.local.keyharbor.local.crt 文件复制到 Harbor 主机上的指定文件夹中。

# 创建目录
mkdir -p /data/cert/

# 复制文件
cp harbor.local.crt /data/cert/
cp harbor.local.key /data/cert/
1
2
3
4
5
6

待会 Harbor 会用到 harbor.local.keyharbor.local.crt 这两个文件。

# 2.2 配置Docker证书

如果不使用https,就忽略此步骤。


为什么需要配置 Docker 证书呢?

配置Docker客户端以便它能够安全地与使用了自签名证书的Harbor仓库进行通信。默认情况下,Docker客户端在尝试与仓库通信时,会检查仓库的SSL证书是否由一个受信任的证书颁发机构(CA)签发。如果证书是自签名的(如Harbor的默认设置),Docker客户端将拒绝连接,因为它不信任该证书。

下面的操作目的是配置Docker守护程序,使其能够信任并使用Harbor仓库的自签名SSL证书,从而安全地与之通信。这确保了Docker客户端和Harbor仓库之间的通信是加密的,并且可以防止中间人攻击。

# 1 转换证书

harbor.local.crt 转换为 harbor.local.cert,供 Docker 使用。

Docker守护程序将 .crt 文件解释为CA证书,并将 .cert 文件解释为客户端证书。

openssl x509 -inform PEM -in harbor.local.crt -out harbor.local.cert
1

# 2 复制证书到指定位置

将服务器证书、服务器私钥和CA文件复制到Harbor主机上的Docker证书文件夹中。必须首先创建适当的文件夹。

# 创建目录
mkdir -p /etc/docker/certs.d/harbor.local/
# 如果不是使用443端口,则需要在后面指定使用的具体端口,例如8001
mkdir -p /etc/docker/certs.d/harbor.local:8001/

cp harbor.local.cert /etc/docker/certs.d/harbor.local/
cp harbor.local.key /etc/docker/certs.d/harbor.local/
cp ca.crt /etc/docker/certs.d/harbor.local/
1
2
3
4
5
6
7
8

# 3 重启Docker引擎

systemctl restart docker
1

# 2.3 获取AMD安装包

下面的是 amd 架构的安装! Harbor 官方并没有提供 arm 版本镜像,arm版本的看后面的 arm版本安装。


在 github 上搜索 harbor:

Harbor 首页:https://github.com/goharbor/harbor


进入详情页面,可以直接使用最新版本:


然后可以选择下载对应的版本:

# 2.4 AMD在线版本安装

# 1 下载

右键复制在线版本的链接地址,可以直接在主机上通过 wget 命令下载,例如:

wget https://github.com/goharbor/harbor/releases/download/v2.10.1/harbor-online-installer-v2.10.1.tgz
1

# 2 解压安装包

将下载的安装包解压

tar -zxvf harbor-online-installer-v2.10.1.tgz 
1

解压后,会有一个 harbor 文件夹,文件夹中的内容如下:

doubi@doubi-server:~/harbor$ ls
common.sh  harbor.yml.tmpl  install.sh  LICENSE  prepare
1
2

# 3 配置

解压的文件夹下有一个 harbor.yml.tmpl 文件,我们要复制一份作为自己的配置文件:

# 复制一份配置文件
doubi@doubi-server:~/harbor$ cp harbor.yml.tmpl harbor.yml

doubi@doubi-server:~/harbor$ ls
common.sh  harbor.yml  harbor.yml.tmpl  install.sh  LICENSE  prepare
1
2
3
4
5

查看 install.sh 脚本文件,里面会有一个提示:

usage=$'Please set hostname and other necessary attributes in harbor.yml first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients.
1

提示不要使用 localhost,因为 Harbor 需要被外部客户端访问。

因为我们已经在 hosts 中配置了域名,所以在 harbor.yml 文件中修改配置:

hostname: harbor.local		# 这里我改成自己域名

# 如果不使用https,需要将https端口和证书等属性屏蔽掉,使用http即可,否则运行会报错
https:
  port: 443
  # 我们上面生成证书的时候,已经将证书放在下面的目录了
  certificate: /data/cert/harbor.local.crt
  private_key: /data/cert/harbor.local.key
1
2
3
4
5
6
7
8

如果不使用https,需要将https端口和证书等属性屏蔽掉,否则运行会报错!

还可以修改登录密码:

harbor_admin_password: Harbor12345		# 登录密码
1

可以在这里修改登录密码,当然后面登录后也可以在页面中进行修改。

# 4 运行

harbor.yml 文件修改好了,现在可以启动运行了,直接运行 install.sh 脚本文件就可以了。

# 进入到install.sh文件目录,执行
./install.sh
1
2

如果遇到权限问题,可以使用 sudo 运行。

运行完成,Harbor相关的容器就会启动,如果要停止或者重启,可以使用如下命令:

# 停止
docker compose down

# 启动
docker compose up -d
1
2
3
4
5

# 5 访问

通过 https://Horbor主机IP 来访问,遇到证书警告,直接同意。

也可以在自己的主机上修改 /etc/host 文件,添加:

Horbor主机IP    harbor.local
1

这样可以通过 https://harbor.local 来访问。

使用 admin 和 harbor.yml 文件中配置的密码(Harbor12345)来登录。

# 2.5 AMD离线版本安装

# 1 下载

github地址:https://github.com/goharbor/harbor

找到想要的版本,右键复制离线版本的链接地址,可以直接在主机上通过 wget 命令下载,例如:

wget https://github.com/goharbor/harbor/releases/download/v2.10.1/harbor-offline-installer-v2.10.1.tgz
1

# 2 解压安装包

将下载的安装包解压

tar -zxvf harbor-offline-installer-v2.10.1.tgz
1

解压后,会有一个 harbor 文件夹,文件夹中的内容如下:

doubi@doubi-server:~/harbor$ ls
common.sh  harbor.v2.10.1.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare
1
2

# 3 配置

解压的文件夹下有一个 harbor.yml.tmpl 文件,我们要复制一份作为自己的配置文件:

# 复制一份配置文件
doubi@doubi-server:~/harbor$ cp harbor.yml.tmpl harbor.yml

doubi@doubi-server:~/harbor$ ls
common.sh  harbor.yml  harbor.yml.tmpl  install.sh  LICENSE  prepare
1
2
3
4
5

查看 install.sh 脚本文件,里面会有一个提示:

usage=$'Please set hostname and other necessary attributes in harbor.yml first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients.
1

提示不要使用 localhost,因为 Harbor 需要被外部客户端访问。

因为我们已经在 hosts 中配置了域名,所以在 harbor.yml 文件中修改配置:

hostname: harbor.local		# 这里我改成自己域名

# 如果不使用https,需要将https端口和证书等属性屏蔽掉,使用http即可,否则运行会报错
https:
  port: 443
  # 我们上面生成证书的时候,已经将证书放在下面的目录了
  certificate: /data/cert/harbor.local.crt
  private_key: /data/cert/harbor.local.key
1
2
3
4
5
6
7
8

如果不使用https,需要将https端口和证书等属性屏蔽掉,否则运行会报错!

还可以修改登录密码:

harbor_admin_password: Harbor12345		# 登录密码
1

可以在这里修改登录密码,当然后面登录后也可以在页面中进行修改。

# 4 运行

harbor.yml 文件修改好了,现在可以启动运行了,直接运行 install.sh 脚本文件就可以了。

# 进入到install.sh文件目录,执行
./install.sh
1
2

如果遇到权限问题,可以使用 sudo 运行。

运行完成,Harbor相关的容器就会启动,如果要停止或者重启,可以使用如下命令:

# 停止
docker compose down

# 启动
docker compose up -d
1
2
3
4
5

# 5 访问

通过 https://Horbor主机IP 来访问,遇到证书警告,直接同意。

也可以在自己的主机上修改 /etc/host 文件,添加:

Horbor主机IP    harbor.local
1

这样可以通过 https://harbor.local 来访问。

使用 admin 和 harbor.yml 文件中配置的密码(Harbor12345)来登录。

# 2.6 ARM离线版本安装

官方提供了一个 arm 版本,但是好久都没更新了,地址:https://github.com/goharbor/harbor-arm

也不知道为什么不更新,我看到有回复说是团队资源有限,如果你看到有推出或更新 arm 架构版本,麻烦发邮件给我,我会更新笔记。


在 github 上找到了一个别人制作的,地址:https://github.com/wise2c-devops/build-harbor-aarch64

# 1 下载

下载 2.10.1 版本,地址:https://github.com/wise2c-devops/build-harbor-aarch64/releases/download/v2.10.1/harbor-offline-installer-aarch64-v2.10.1.tgz

直接在 Linux 中使用 wget 命令下载:

wget https://github.com/wise2c-devops/build-harbor-aarch64/releases/download/v2.10.1/harbor-offline-installer-aarch64-v2.10.1.tgz
1

剩下的步骤和AMD版本离线安装是一样的。

# 2 解压安装包

将下载的安装包解压

tar -zxvf harbor-offline-installer-aarch64-v2.10.1.tgz 
1

解压后,会有一个 harbor 文件夹,文件夹中的内容如下:

doubi@doubi-server:~/harbor$ ls
common.sh  harbor.v2.10.1.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare
1
2

# 3 配置

解压的文件夹下有一个 harbor.yml.tmpl 文件,我们要复制一份作为自己的配置文件:

# 复制一份配置文件
doubi@doubi-server:~/harbor$ cp harbor.yml.tmpl harbor.yml

doubi@doubi-server:~/harbor$ ls
common.sh  harbor.yml  harbor.yml.tmpl  install.sh  LICENSE  prepare
1
2
3
4
5

查看 install.sh 脚本文件,里面会有一个提示:

usage=$'Please set hostname and other necessary attributes in harbor.yml first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients.
1

提示不要使用 localhost,因为 Harbor 需要被外部客户端访问。

因为我们已经在 hosts 中配置了域名,所以在 harbor.yml 文件中修改配置:

hostname: harbor.local		# 这里我改成自己域名

# 如果不使用https,需要将https端口和证书等属性屏蔽掉,使用http即可,否则运行会报错
https:
  port: 443
  # 我们上面生成证书的时候,已经将证书放在下面的目录了
  certificate: /data/cert/harbor.local.crt
  private_key: /data/cert/harbor.local.key
1
2
3
4
5
6
7
8

如果不使用https,需要将https端口和证书等属性屏蔽掉,否则运行会报错!

还可以修改登录密码:

harbor_admin_password: Harbor12345		# 登录密码
1

可以在这里修改登录密码,当然后面登录后也可以在页面中进行修改。

# 4 运行

harbor.yml 文件修改好了,现在可以启动运行了,直接运行 install.sh 脚本文件就可以了。

# 进入到install.sh文件目录,执行
./install.sh
1
2

如果遇到权限问题,可以使用 sudo 运行。

运行完成,Harbor相关的容器就会启动,如果要停止或者重启,可以使用如下命令:

# 停止
docker compose down

# 启动
docker compose up -d
1
2
3
4
5

# 5 访问

通过 https://Horbor主机IP 来访问,遇到证书警告,直接同意。

也可以在自己的主机上修改 /etc/host 文件,添加:

Horbor主机IP    harbor.local
1

这样可以通过 https://harbor.local 来访问。

使用 admin 和 harbor.yml 文件中配置的密码(Harbor12345)来登录。

# 2.7 Harbor启动和停止

直接使用 Docker Compose 启动和停止就可以了。

注意要先进入 harbor 目录才能执行。

# 1 启动

docker compose up -d
1
  • -d :后台运行。

# 2 停止

docker compose down
1