目录

Harbor 核心服务不可用---故障排除

问题描述

今天在测试harbor镜像仓库,按照网上的教程处理了下docker的安全域名问题

Error response from daemon: Get “https://IP/v2/”: x509: certificate relies on legacy Common Name field, use SANs instead
原因:自生成的证书被Docker认为不可靠的
解决:把自生成的证书放入Docker配置文件中

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 在docker配置文件中建立自己IP或域名的文件夹,切记如果之前配置的是443端口,则可以不加端口号,默认443。如果配了特定的端口号,文件夹名需要加上端口号
mkdir /etc/docker/cert.d/IP(或者域名):端口号(配了443端口的话,可以不加)
# 示例
mkdir /etc/docker/cert.d/127.0.0.1:8443

# 将证书复制进入
cp /data/cert/ca.crt /etc/docker/cert.d/127.0.0.1/

# 重启docker
systemctl restart docker
Error response from daemon: Get “https://IP/v2/”: dial tcp IP:8443: connect: connection refused
原因:Docker拒绝不安全连接
解决:将自己的IP或域名加入Docker允许的不安全连接中
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 创建docker配置文件,加入配置
touch /etc/docker/daemon.json

# 编辑文件
vi /etc/docker/daemon.json

# 加入如下配置
{
"insecure-registries" : ["IP或域名:端口"]
}
示例:该连接端口为https端口
{
"insecure-registries" : ["127.0.0.1:8443"]
}

# 重启Docker
systemctl restart docker
# 注意此时重启了docker,但是harbor不一定会成功重启,需要手动重启harbor
# 先进入自己的harbor目录
cd /opt/harbor

# 停止harbor
docker-compose down -v

# 重启harbor
docker-compose up -d

重启harbor后进入登录页面,登录的时候报错“核心服务不可用”,通过docker ps看了下容器运行情况,发现harbor-db无法正常启动,一直在重启

1
docker ps

/images/20230910/img.png

排查步骤

使用查看harbor日志

发现是postgresql问题

1
tail /var/log/harbor/core.log

/images/20230910/img_1.png

查看postgresql日志

发现是如果用docker-compose down -v命令的话,会将容器、网络、卷都删除,导致重启用docker-compose up -d启动需要重新初始化数据库

1
tail /var/log/harbor/postgresql.log

/images/20230910/img_2.png

问题处理

服务提示要么可以创建新的文件夹或者删除旧数据,反正是刚安装来测试的,所以我选择了直接删除旧文件夹

1
rm -rf /data/database

验证

重新启动harbor,服务恢复正常,docker也能正常登录到horbor

1
docker-compose up -d

/images/20230910/img_3.png