centos docker搜索报connection refused
时间: 2024-12-31 16:45:53 浏览: 11
### CentOS Docker Connection Refused 解决方案
#### 一、确认Docker服务状态
确保Docker守护进程正在运行。如果未启动,则需要先启动它。
```bash
sudo systemctl start docker
```
验证Docker服务的状态:
```bash
sudo systemctl status docker
```
若显示`active (running)`则表示Docker已成功启动[^1]。
#### 二、检查防火墙设置
有时防火墙会阻止外部请求到达指定端口,因此需配置允许特定端口通信。
对于CentOS,默认使用的firewalld可以这样操作来开放端口(以22为例):
```bash
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
sudo firewall-cmd --reload
```
替换上述命令中的`22`为你实际想要暴露给外界访问的服务端口号[^3]。
#### 三、核查容器网络配置
当遇到类似`Connection refused: /172.25.xxx.x:6379`这样的错误时,可能是因为容器内的应用监听的是localhost而非0.0.0.0,这意味着它们只接受来自同一台机器内部的连接尝试。
进入有问题的容器内执行如下指令查看应用程序绑定地址情况:
```bash
netstat -tulnp | grep <目标端口>
```
如果是Redis或者其他数据库类的应用程序,应该修改其配置文件让其监听所有IP(`bind 0.0.0.0`) 或者至少是宿主机能够触及到的那个网卡接口[^2]。
#### 四、排查SELinux影响
在某些情况下,即使端口已经在Linux防火墙上打开,但由于SELinux的安全策略仍然不允许流量通过。可以通过临时禁用SELinux来进行测试(不建议长期这样做),方法是在终端输入:
```bash
setenforce 0
```
这将把当前系统的SELinux模式切换至宽容(permissive)模式,在这种状态下虽然不会强制实施安全规则但是依旧记录违反行为以便日后审计;之后再试一次之前的连接动作看是否恢复正常工作。
#### 五、重新加载或重启相关组件
完成以上调整后,记得要刷新iptables规则以及重启涉及变动的服务/容器实例才能使更改生效。
```bash
sudo iptables -F && sudo service docker restart
```
另外也可以考虑完全重置整个docker环境作为最后手段:
```bash
sudo rm -rf /var/lib/docker/*
sudo systemctl restart docker
```
注意此操作将会删除所有的本地镜像和卷数据,请谨慎行事!
---
阅读全文