Docker: getsockopt: connection refused 问题解决

本文解决CentOS7环境下,Harbor部署完成后,因默认使用HTTP而非HTTPS导致的跨服务器登录、镜像推拉失败问题。通过三种方法修改Docker配置,启用不安全注册表,确保Harbor服务正常交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作系统

centos7

问题描述

部署好的harbor无法从其他服务器登陆

 

问题原因

docker1.3.2版本开始默认docker registry使用的是https,而我们设置Harbor默认http方式,所以当执行用docker login、pull、push等命令操作非https的docker regsitry的时就会报错。

 

解决方法

想要从哪个服务进行登陆或者推拉镜像,那么就需要在哪个服务器的docker配置里面进行修改

方法一:

vi /etc/sysconfig/docker

添加:INSECURE_REGISTRY='--insecure-registry=192.168.11.227'

方法二:

 /etc/docker/daemon.json

加入配置:"insecure-registries":["192.168.11.227"]

方法三:

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

在ExecStart属性后面添加: --insecure-registry=192.168.11.227

 

选择一种配置修改方案,配置修改完之后,应用配置并重启docker:

systemctl daemon-reload    ---应用配置

systemctl restart docker      ---重启docker

### Docker 构建时出现 `connection refused` 错误的解决方案 当遇到 `docker build connection refused` 错误时,通常意味着客户端尝试与 Docker 守护程序通信失败。这可能是由于多种原因引起的,包括网络配置错误、守护进程未运行或端口冲突等问题。 #### 1. 验证 Docker 守护程序状态 确保 Docker 守护程序正在运行。可以通过以下命令检查服务状态: ```bash sudo systemctl status docker ``` 如果服务未启动,则可以使用下面的命令来启动它: ```bash sudo systemctl start docker ``` #### 2. 修改 Docker Daemon 配置文件 有时默认设置可能不适合某些环境,因此调整 `/etc/docker/daemon.json` 文件中的参数可能会有所帮助。对于中国用户来说,添加国内镜像源可以帮助加速镜像下载过程并减少连接问题的发生几率[^1]。 例如,在该文件中加入阿里云提供的官方镜像地址作为 registry-mirrors 参数之一: ```json { "registry-mirrors": ["https://<your_mirror>.mirror.aliyuncs.com"] } ``` 之后重启 Docker 使更改生效: ```bash sudo systemctl restart docker ``` #### 3. 设置代理服务器 (适用于企业内网) 如果工作在一个受限的企业环境中,那么很可能需要通过 HTTP 或 HTTPS 代理才能访问外部资源。此时应该相应地配置好系统的全局代理以及 Docker 自身支持的相关选项。 编辑或创建位于 `$HOME/.docker/config.json` 的 JSON 文件,并按照如下格式填写必要的代理信息: ```json { "proxies": { "default": { "httpProxy": "http://proxy.example.com:80", "httpsProxy": "http://proxy.example.com:80" } } } ``` #### 4. 检查防火墙规则和 SELinux 状态 确认本地机器上的防火墙不会阻止到 Docker 所需端口(通常是 TCP 2375 和 2376)之间的流量;另外还需注意 Linux 上启用的安全增强模块 SELinux 是否会对容器化应用造成影响。必要情况下临时关闭这些安全特性来进行测试排查。 禁用 SELinux 可以通过修改 `/etc/selinux/config` 中的策略模式为 permissive 来实现: ```ini SELINUX=permissive ``` 随后执行 reboot 命令让改动立即起效。 #### 5. 使用替代仓库 考虑到国际互联网状况不稳定等因素的影响,建议优先考虑使用国内的一些公共镜像站或者私有 Registry 实例代替官方 Docker Hub 进行操作。这样不仅可以提高效率还能规避因地域限制带来的麻烦。 例如,可以直接指定要使用的镜像库 URL 地址给 pull/build 子命令: ```bash docker build --build-arg REGISTRY_URL=https://hub.daocloud.io -t myapp . ``` 以上方法涵盖了大多数场景下解决 `connection refused` 类型错误的有效途径。当然具体情况还需要具体分析,希望上述指导能够帮助解决问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值