# Harbor教程 - 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
后面用到 harbor.local
,你替换为你自己的就可以。
# 2 安装openssl
生成自签名证书需要用到 OpenSSL,下面是在 CentOS 和 Ubuntu 中的安装方式:
Ubuntu:
sudo apt update
sudo apt install openssl
2
CentOS:
sudo yum install openssl
# 3 生成CA证书私钥
openssl genrsa -out ca.key 4096
会生成一个 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
2
3
4
通过 ca.key
文件生成一个 crt
文件,CA 证书后面用来签署服务器证书。
# 5 生成服务器证书私钥
openssl genrsa -out harbor.local.key 4096
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
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
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
2
3
4
5
最终生成了 harbor.local.crt
。
# 9 复制证书到指定位置
将 harbor.local.key
和 harbor.local.crt
文件复制到 Harbor 主机上的指定文件夹中。
# 创建目录
mkdir -p /data/cert/
# 复制文件
cp harbor.local.crt /data/cert/
cp harbor.local.key /data/cert/
2
3
4
5
6
待会 Harbor 会用到 harbor.local.key
和 harbor.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
# 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/
2
3
4
5
6
7
8
# 3 重启Docker引擎
systemctl restart docker
# 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
# 2 解压安装包
将下载的安装包解压
tar -zxvf harbor-online-installer-v2.10.1.tgz
解压后,会有一个 harbor 文件夹,文件夹中的内容如下:
doubi@doubi-server:~/harbor$ ls
common.sh harbor.yml.tmpl install.sh LICENSE prepare
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
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.
提示不要使用 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
2
3
4
5
6
7
8
如果不使用https,需要将https端口和证书等属性屏蔽掉,否则运行会报错!
还可以修改登录密码:
harbor_admin_password: Harbor12345 # 登录密码
可以在这里修改登录密码,当然后面登录后也可以在页面中进行修改。
# 4 运行
harbor.yml
文件修改好了,现在可以启动运行了,直接运行 install.sh
脚本文件就可以了。
# 进入到install.sh文件目录,执行
./install.sh
2
如果遇到权限问题,可以使用 sudo
运行。
运行完成,Harbor相关的容器就会启动,如果要停止或者重启,可以使用如下命令:
# 停止
docker compose down
# 启动
docker compose up -d
2
3
4
5
# 5 访问
通过 https://Horbor主机IP
来访问,遇到证书警告,直接同意。
也可以在自己的主机上修改 /etc/host
文件,添加:
Horbor主机IP harbor.local
这样可以通过 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
# 2 解压安装包
将下载的安装包解压
tar -zxvf harbor-offline-installer-v2.10.1.tgz
解压后,会有一个 harbor 文件夹,文件夹中的内容如下:
doubi@doubi-server:~/harbor$ ls
common.sh harbor.v2.10.1.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
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
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.
提示不要使用 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
2
3
4
5
6
7
8
如果不使用https,需要将https端口和证书等属性屏蔽掉,否则运行会报错!
还可以修改登录密码:
harbor_admin_password: Harbor12345 # 登录密码
可以在这里修改登录密码,当然后面登录后也可以在页面中进行修改。
# 4 运行
harbor.yml
文件修改好了,现在可以启动运行了,直接运行 install.sh
脚本文件就可以了。
# 进入到install.sh文件目录,执行
./install.sh
2
如果遇到权限问题,可以使用 sudo
运行。
运行完成,Harbor相关的容器就会启动,如果要停止或者重启,可以使用如下命令:
# 停止
docker compose down
# 启动
docker compose up -d
2
3
4
5
# 5 访问
通过 https://Horbor主机IP
来访问,遇到证书警告,直接同意。
也可以在自己的主机上修改 /etc/host
文件,添加:
Horbor主机IP harbor.local
这样可以通过 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
剩下的步骤和AMD版本离线安装是一样的。
# 2 解压安装包
将下载的安装包解压
tar -zxvf harbor-offline-installer-aarch64-v2.10.1.tgz
解压后,会有一个 harbor 文件夹,文件夹中的内容如下:
doubi@doubi-server:~/harbor$ ls
common.sh harbor.v2.10.1.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
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
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.
提示不要使用 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
2
3
4
5
6
7
8
如果不使用https,需要将https端口和证书等属性屏蔽掉,否则运行会报错!
还可以修改登录密码:
harbor_admin_password: Harbor12345 # 登录密码
可以在这里修改登录密码,当然后面登录后也可以在页面中进行修改。
# 4 运行
harbor.yml
文件修改好了,现在可以启动运行了,直接运行 install.sh
脚本文件就可以了。
# 进入到install.sh文件目录,执行
./install.sh
2
如果遇到权限问题,可以使用 sudo
运行。
运行完成,Harbor相关的容器就会启动,如果要停止或者重启,可以使用如下命令:
# 停止
docker compose down
# 启动
docker compose up -d
2
3
4
5
# 5 访问
通过 https://Horbor主机IP
来访问,遇到证书警告,直接同意。
也可以在自己的主机上修改 /etc/host
文件,添加:
Horbor主机IP harbor.local
这样可以通过 https://harbor.local
来访问。
使用 admin 和 harbor.yml
文件中配置的密码(Harbor12345)来登录。
# 2.7 Harbor启动和停止
直接使用 Docker Compose 启动和停止就可以了。
注意要先进入 harbor 目录才能执行。
# 1 启动
docker compose up -d
-d
:后台运行。
# 2 停止
docker compose down