Error response from daemon: Get http://xxx/v2/: dial tcp xxx:80: connect: connection refused

本文详细描述了在使用Harbor时遇到登录问题的解决方法,包括进入harbor目录、修改docker服务配置文件以允许不安全连接、重启服务并验证登录过程。

1、登录harbor报错

2、解决办法

2.1 进入harbor目录,停止harbor

2.2 修改docker.service配置文件(需要登录Harbor仓库的主机都要修改):

 添加 --insecure-registry=192.168.0.190 配置

vi /usr/lib/systemd/system/docker.service

2.3 重启服务

systemctl daemon-reload

systemctl restart docker
 

2.4 启动harbor

2.5 登录验证

<think>我们之前已经部署了Harbor,并且禁用了HTTPS,现在重新开启HTTPS后遇到了连接拒绝的错误(443端口连接被拒绝)。结合引用内容,这个错误通常是由于Harbor服务未能正确监听443端口导致的。我们需要逐步排查。 错误信息:`Error response from daemon: Get "https://10.8.6.160/v2/": dial tcp 10.8.6.160:443: connect: connection refused` 可能的原因: 1. Harbor的HTTPS服务没有正常启动(可能是配置问题导致服务启动失败) 2. 防火墙或安全组阻止了443端口的访问 3. Harbor配置文件中指定的证书路径不正确,导致服务无法绑定到443端口 4. 443端口被其他进程占用 解决步骤: 步骤1:检查Harbor的服务状态 首先,进入Harbor的安装目录,使用`docker-compose ps`命令查看各个容器的运行状态。确保所有容器(特别是core、portal和nginx)都处于运行状态(Up)。如果nginx容器没有启动,那么443端口就不会被监听。 步骤2:检查端口监听情况 在Harbor服务器上执行以下命令,检查443端口是否被监听: ```bash sudo netstat -tuln | grep 443 ``` 如果没有任何输出,说明没有服务监听443端口,需要检查Harbor的配置和启动情况。 步骤3:检查Harbor的配置文件(harbor.yml) 确认harbor.yml中的HTTPS配置正确: ```yaml https: port: 443 certificate: /your/certificate/path/server.crt # 确保路径正确,且文件存在 private_key: /your/certificate/path/server.key # 确保路径正确,且文件存在 ``` 步骤4:检查证书文件权限 确保证书文件(server.crt和server.key)的权限设置正确,通常nginx进程需要读取这些文件。建议权限: ```bash chmod 644 /etc/docker/certs/server.crt chmod 600 /etc/docker/certs/server.key ``` 步骤5:重新配置并重启Harbor 如果修改了配置,需要重新运行prepare脚本并重启Harbor: ```bash # 在Harbor安装目录下 sudo ./prepare docker-compose down -v docker-compose up -d ``` 步骤6:查看Harbor的日志 如果问题依旧,查看nginx容器的日志: ```bash docker-compose logs nginx ``` 日志中可能会提示证书路径错误、权限问题或配置错误。 步骤7:检查防火墙 确保服务器的防火墙放行了443端口(以firewalld为例): ```bash sudo firewall-cmd --list-ports sudo firewall-cmd --add-port=443/tcp --permanent sudo firewall-cmd --reload ``` 步骤8:检查端口占用 如果443端口被其他进程占用,需要停止该进程或修改Harbor的HTTPS端口(但这样客户端访问时就需要指定端口)。 步骤9:客户端测试 在服务器本地使用curl测试,避免网络问题: ```bash curl -k https://localhost ``` 加上`-k`忽略证书验证,如果能够返回Harbor的页面,则说明服务端已经正常。 步骤10:客户端配置 确保客户端(Docker守护进程)信任自签发的CA证书(如果使用的是自签名证书)。将CA证书复制到客户端的相应目录: ```bash # 在客户端机器上 sudo mkdir -p /etc/docker/certs.d/10.8.6.160 sudo cp ca.crt /etc/docker/certs.d/10.8.6.160/ca.crt sudo systemctl restart docker ``` 注意:如果Harbor使用的是IP地址而不是域名,那么客户端目录应为`/etc/docker/certs.d/<IP>:<PORT>`,由于使用的是默认端口443,则目录名为`10.8.6.160`(不需要端口)。 如果以上步骤都正确,应该就能解决连接拒绝的问题。 引用中提到的类似错误(引用[1]、[2])都是关于443端口连接被拒绝,通常都是服务端没有监听443端口,可能是服务没有启动或配置错误。引用[3]、[4]也提到了同样的错误,原因可能是Harbor服务未正常运行或配置问题。 请按照以上步骤逐一排查。 </think>以下是解决Harbor重新启用HTTPS后出现`Error response from daemon: Get "https://10.8.6.160/v2/": dial tcp 10.8.6.160:443: connect: connection refused`错误的完整步骤: ### 错误原因分析 该错误表明Docker客户端无法连接到Harbor的443端口,通常由以下原因导致: 1. **Harbor服务未监听443端口**(配置未生效) 2. **防火墙/安全组阻止443端口**(网络层拦截) 3. **nginx服务未启动**(容器状态异常) 4. **证书配置错误**(导致服务启动失败)[^1][^2][^4] --- ### 排查与解决方案 #### 步骤1:检查Harbor服务状态 ```bash # 进入Harbor安装目录 cd /path/to/harbor # 检查容器状态 docker-compose ps # 查看nginx容器日志(核心错误来源) docker-compose logs nginx | grep -i error ``` **预期结果**:所有服务状态应为`Up`,nginx容器监听`443/tcp`端口 **异常处理**:若nginx未运行,执行`docker-compose up -d nginx` #### 步骤2:验证端口监听 ```bash # 检查443端口监听状态 sudo netstat -tuln | grep 443 # 测试本地连接 curl -vk https://localhost:443 ``` **预期结果**:应显示TCP 0.0.0.0:443的监听状态 **异常处理**:若无输出,进入步骤3[^1][^2] #### 步骤3:检查防火墙配置 ```bash # 查看防火墙状态(Ubuntu) sudo ufw status # 放行443端口(CentOS) sudo firewall-cmd --add-port=443/tcp --permanent sudo firewall-cmd --reload # 检查云平台安全组规则 # 确认入站规则允许0.0.0.0/0访问443端口 ``` #### 步骤4:验证证书配置 ```bash # 检查harbor.yml配置 grep -A3 &#39;https:&#39; harbor.yml # 验证证书文件存在性 sudo ls -l $(grep &#39;certificate:&#39; harbor.yml | awk &#39;{print $2}&#39;) sudo ls -l $(grep &#39;private_key:&#39; harbor.yml | awk &#39;{print $2}&#39;) # 测试证书有效性 openssl x509 -in /etc/docker/certs/server.crt -noout -text ``` **关键点**:确保证书路径正确且文件可读[^4] #### 步骤5:强制重建nginx服务 ```bash # 停止并删除nginx容器 docker-compose stop nginx docker-compose rm -f nginx # 重新生成配置并启动 sudo ./prepare docker-compose up -d nginx ``` #### 步骤6:客户端诊断 在Docker客户端执行: ```bash # 测试端口连通性 telnet 10.8.6.160 443 # 检查证书信任配置 ls /etc/docker/certs.d/10.8.6.160 # 应包含ca.crt文件 ``` --- ### 故障树分析 ```mermaid graph TD A[443连接拒绝] --> B{服务端检测} B -->|端口未监听| C[检查nginx状态] B -->|端口被拦截| D[检查防火墙] C --> E[查看容器日志] E -->|配置错误| F[验证harbor.yml] E -->|证书问题| G[检查证书路径] D --> H[开放443端口] F --> I[重新./prepare] G --> J[更正证书权限] ``` --- ### 关键配置示例 **正确的harbor.yml片段**: ```yaml https: port: 443 certificate: /etc/docker/certs/server.crt private_key: /etc/docker/certs/server.key hostname: 10.8.6.160 # 必须与证书CN一致 ``` **证书权限要求**: ```bash sudo chmod 644 /etc/docker/certs/server.crt sudo chmod 600 /etc/docker/certs/server.key ``` > 完成修复后,使用 `docker login 10.8.6.160` 测试登录[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

青春1314

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

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

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

打赏作者

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

抵扣说明:

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

余额充值