错误如下(博主开始使用的http形式,后来改为https,由于一开始使用的IP,后来生成证书时采用的是域名,没有修改harbor中的hostname配置导致以下错误):

  1. iverson@worker:/etc/docker/certs.d/gerrit.backup.com$ sudo docker login gerrit.backup.com
  2. Username: amax
  3. Password:
  4. Error response from daemon: Get https://gerrit.backup.com/v2/: Get https://192.168.121.100/service/token?account=amax&client_id=docker&offline_token=true&service=harbor-registry: x509: cannot validate certificate for 192.168.121.100 because it doesn't contain any IP SANs

此处给出排查思路:

这个错误的原因大多是因为证书相关原因。

首先删除所有签名,然后根据官方配置https文档操作一遍:

https://goharbor.io/docs/2.0.0/install-config/configure-https/

操作后首先检测本地是否可以docker login,如果本地失败,建议重新配置,若多次失败,删除已解压的harbor安装包重新解压部署;

本地docker login成功,异地失败:证书配置没问题,harbor配置有误,此时检测harbor的配置文件中hostname是否与证书生成是配置的域名一样;

/etc/hosts是否添加域名解析。

 

 

建议各位看官,在使用harbor时配置域名+https形式,这种形式配置的harbor在客户端想登陆使用时无需重启客户端:

观点1:harbor异地命令行登陆只支持域名形式访问,ip形式也可以访问,需要配置异地客户端docker配置,配置后重启生效,此种形式不推荐,避免客户端有不方便重启的容器。

  1. $ cat /etc/docker/daemon.json
  2. {
  3. "insecure-registries": ["https://192.168.121.100"]
  4. }
  5. # 此形式配置后需要重启docker,如果添加多个仓库,#号为注释:
  6. $ cat /etc/docker/daemon.json
  7. {
  8. "insecure-registries": ["https://192.168.121.100,https://192.168.121.101"]
  9. }

观点2:

https在docker中默认使用的,若harbor是http,则需要配置客户端使用http形式,配置后仍需重启,不推荐。

发表评论

邮箱地址不会被公开。 必填项已用*标注