harbor常见问题及解决方法分享

harbor常见问题及解决方法分享

参考自《harbor权威指南》。

1. harbor配置文件不生效

问题现象

无论是在生产环境下还是在测试环境下,都会有对配置文件进行修改的场景。很多用户在停掉Harbor容器后,都会修改配置文件然后启动Harbor,发现配置还是保持原样,而不是更新为刚修改的值。

问题原因

Harbor的配置文件在修改后并不会直接生效。Harbor的众多组件都有自己的配置文件和环境变量,但是配置文件harbor.yml只有一个,用户需要通过运行prepare容器,使得Harbor配置文件中的配置项能够渲染到各组件所依赖的配置文件。参考命令如下:

$ docker-compose down -v

$ ./prepare --with-notary --with-clair --with-trivy --with-chartmuseum

$ docker-compose up -d

2. Docker重启后Harbor无法启动

问题现象

在使用docker部署harbor后,如果重启docker服务,或者重启机器后,有时候会遇到harbor无法访问的问题。某些组件的容器会陷入无限重启状态。

问题原因

原因为Harbor的各个组件容器之间会有依赖关系,这些信息都被定义在配置文件docker-compose.yml中。其中,日志容器会监听本地IP地址127.0.0.1的1514端口,以接收和汇总其他容器的日志。其他容器则将日志输出到标准输出中,然后通过Docker的后台进程(Docker Daemon)将日志统一转发到127.0.0.1:1514。但是,日志容器和Docker后台进程的启动顺序是随机的,若日志容器先启动,则它会发现Docker后台并未启动,所以启动失败,其他容器无法连接日志容器,也会启动失败。

解决方法

这个问题的源头是两个互相依赖的进程无法保证启动顺序,因为其启动顺序由操作系统调度决定,所以Docker后台进程的生命周期管理已经超出了Harbor的能力范围,无法在Harbor层面解决。但是,我们可以在操作系统层面定义服务的启动顺序,在主流Linux系统如Ubuntu和CentOS中利用类似如下所示的systemd配置,将其根据自己的需求稍做修改,并保存到操作系统的systemd启动配置文件夹处,放到/lib/systemd/system文件夹或者/usr/lib/systemd/system/文件夹,或者/etc/systemd/system路径下:

创建文件harbor.service,内容如下:

[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=https://goharbor.io/docs

[Service]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lldhsds

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值