基于Ubuntu的Harbor搭建流程

本文最后更新于:3 个月前

准备工作

  1. 准备安装包

harbor的github仓库地址:harbor,找到自己要安装的版本提前下载,也可以在服务器wget下载,自行解决即可。

此处使用的版本为v2.1.4,并已上传并解压至服务器/usr/local/目录下,解压后的路径和内容如下:

image.png

  1. 生成HTTPS访问所需的证书

这里提供一个生成证书的脚本,https://www.bookstack.cn/read/rancher-v2.x/43c8d247182c02a2.md,篇幅过大,请在原地址自取。

复制以上脚本内容,命名为create_cert.sh,给755权限,脚本参数参考如下说明:

1
2
3
4
5
6
7
--ssl-domain:生成ssl证书需要的主域名,如不指定则默认为localhost,如果是ip访问服务,则可忽略;
--ssl-trusted-ip:一般ssl证书只信任域名的访问请求,有时候需要使用ip去访问server,那么需要给ssl证书添加扩展IP,多个IP用逗号隔开;
--ssl-trusted-domain:如果想多个域名访问,则添加扩展域名(TRUSTED_DOMAIN),多个TRUSTED_DOMAIN用逗号隔开;
--ssl-size: ssl加密位数,默认2048;
--ssl-date: ssl有效期,默认10年;
--ca-date: ca有效期,默认10年;
--ssl-cn:国家代码(2个字母的代号),默认CN;

此处我的命令如下,可以参考。此处是局域网IP访问,不走域名,因此只配置IP:

1
./create_cert.sh --ssl-trusted-ip=192.168.0.201 --ssl-size=2048 --ssl-date=3650

运行之后会生成tls.key和tls.crt两个文件,留存备用,我个人习惯放在了/usr/local/cert目录下,下一节配置harbor时会用到。

  1. 安装docker-compose

这里安装的是1.25.5版本:

1
2
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose #赋予可执行文件

安装完成后,使用docker-compose --version检查是否成功。

安装harbor

  1. 修改配置文件

从配置模板文件中复制出一个配置文件:

1
cp harbor.yml.tmpl harbor.yml

harbor v2.1.4版本的配置文件时yml格式的,而并非是远古版本的cfg格式,因此配置时需要注意。

使用vim打开harbor.yml配置文件,修改如下几个内容:

1
2
3
4
5
6
7
8
9
10
hostname: 192.168.0.201  #这里修改为服务器的外部可访问IP,此处服务器在局域网,是单IP,若是云服务商的内外双IP,请自行调整

http:
port: 20080 #修改http下的访问端口,这里使用20080

https:
port: 20443 #修改https下的访问端口,这里使用20443
certificate: /usr/local/cert/tls.crt #证书crt文件的位置,此处为/usr/local/cert/tls.crt
private_key: /usr/local/cert/tls.key #证书key文件的位置,此处为/usr/local/cert/tls.key

除此之外还有一些其他的配置,根据需要自行配置即可。

  1. 安装harbor

harbor目录中有一个prepare文件,执行此文件,开始配置harbor:

1
./prepare

执行完之后,会自动拉取镜像并进行配置,完成后,再执行install.sh进行安装:

1
./install.sh

看到此内容之后,就可以在浏览器访问进行测试了:

image.png

浏览器输入https://192.168.0.201:20443,出现如下界面,表示搭建成功:
image.png

  1. 使用和配置harbor

如果你没有修改配置文件中的默认密码,那么默认密码是Harbor12345,用户名为admin,登陆进去后即可进行新建项目、修改密码、创建用户等一系列操作,到此处,harbor就搭建完了。

docker推送镜像到harbor

首先在harbor中新建一个项目test,创建之后如下:
image.png

点击进入项目详情,右侧可以看到tag镜像和push镜像的命令:

image.png

我服务器上有一个jupyter/all-spark-notebook镜像,这里我把这个镜像tag并push到harbor中:

1
docker tag jupyter/all-spark-notebook 192.168.0.201:20443/test/jupyter/all-spark-notebook

先登录私有仓库:

1
docker login 192.168.0.201:20443

不出意外,会出现certificate signed by unknown authority错误,这个是因为harbor设置HTTPS后,需要通过以下步骤:

  • 确保-insecure-registry配置不存在,并且将上述步骤中生成的tls.crt复制到/etc/docker/certs.d/reg.yourdomain.com(或Harbor主机IP),如果该目录不存在,则创建它。此处为/etc/docker/certs.d/192.168.0.201:20443,然后将tls.crt放进去即可。

在此尝试登陆,登陆成功:
image.png

然后推送镜像:

1
docker push 192.168.0.201:20443/test/jupyter/all-spark-notebook

然后harbor中看到推送的镜像:
image.png

这里就表示成功了。搭建harbor全部结束,上一篇是在部署过程中遇到的问题,然后对部署做了此篇总结,搭配食用更香。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!