目录
一、问题描述
二、证书信任问题
三、DNS解析问题
四、解决
参考链接:Docker login Harbor报错解决:Error response from daemon: Get https:..-阿里云开发者社区
一、问题描述
问题:
挂机或者挂机重启之后harbor登录不上
查看日志查找问题:
[root@docker ~]# journalctl -u docker.service -n 50
[root@docker reg.zx.org]# docker logs 容器id
包含以下问题
# 1、容器重启失败
level=error msg="failed to start container" container=6bf913f9a5b0c395ca68505d39c3f0aa2e25054730bec1d49b64cf70a1530809 error="failed to create ta
# 2、注册表问题
level=error msg="Handler for POST /v1.46/auth returned error: Get \"https://reg.zx.org/v2/\": dial tcp 172.25.254.111:443: connect: connection refused"
# 3、DNS查询失败
level=error msg="[resolver] failed to query external DNS server"
# 4、容器无法启动
level=error msg="failed to start container" container=...
二、证书信任问题
Self-signed Certificate (自签名证书)没有通过可信的证书颁发机构 (CA) 签署,所以验证失败,提示 verify error:num=18:self-signed certificate
。
将自签名证书添加到系统的可信证书存储中
#生成认证key和证书
[root@docker-node1 ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/zx.org.key \
> -addext "subjectAltName = DNS:reg.zx.org" \
> -x509 -days 365 -out certs/zx.org.crt
[root@local ~]# mkdir /data/certs -p
[root@local ~]# cp /root/certs/ /data/ -r
[root@local certs]# ls /data/certs
zx.org.crt zx.org.key
# Docker 中信任自签名证书
# 将证书复制到 Docker 的信任目录: Docker 在 /etc/docker/certs.d/ 下的特定目录中查找每个镜像仓库的信任证书。
[root@docker ~ ]# mkdir -p /etc/docker/certs.d/reg.zx.org/
[root@docker ~ ]# cp
[root@docker ~ ]# cd certs/
[root@docker certs]# cp zx.org.crt /etc/docker/certs.d/reg.zx.org/zx.org.crt
# 将证书添加到信任存储
# 在 RHEL9中,系统使用 update-ca-trust 工具来管理系统信任存储。
# 将自签名证书文件 .crt 复制到 /etc/pki/ca-trust/source/anchors/ 目录中
[root@docker reg.zx.org]# cp ca.crt /etc/pki/ca-trust/source/anchors/
# 更新 CA 证书信任存储
[root@docker reg.zx.org]# update-ca-trust extract
[root@docker reg.zx.org]# vim /etc/rc.d/rc.local # 开机自启动文件(将“update-ca-trust extract”写入)
# 验证证书是否被信任
[root@docker reg.zx.org]# openssl s_client -connect reg.zx.org:443
……
Verify return code: 0 (ok)
……
三、DNS解析问题
[root@docker certs]# vim /etc/docker/daemon.json
#添加或修改DNS解析地址
{
"dns": ["8.8.8.8", "8.8.4.4","114.114.114.114"]
}
[root@docker certs]# systemctl daemon-reload
[root@docker certs]# systemctl restart docker
四、解决
# 解决方案
[root@docker harbor]# systemctl restart docker # 重启docker
[root@docker harbor]# docker ps -a # 查看容器是否全部运行
[root@docker harbor]# docker compose up -d # 若无,开启运行所有容器
[root@docker-harbor ~]# docker login reg.zx.org -uadmin -p123 # 再次登录