You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose端口仅绑定127.0.0.1,无法通过IP访问求助

排查Docker端口映射仅本地可访问的问题

针对你遇到的MariaDB容器端口映射看似绑定0.0.0.0但仅127.0.0.1可访问的问题,以下是具体排查方向:

1. 检查MariaDB内部绑定地址

容器端口映射正常不代表数据库本身监听了所有地址,进入容器检查配置:

docker exec -it ua-database bash
# 查看MariaDB核心配置文件
cat /etc/mysql/mariadb.conf.d/50-server.cnf | grep bind-address

如果输出为bind-address = 127.0.0.1,修改为bind-address = 0.0.0.0,然后重启容器:

docker restart ua-database

2. 验证主机防火墙规则

本地防火墙可能新增了拦截规则,检查并放行3308端口:

  • Ubuntu/Debian:
    sudo ufw status
    # 若未允许3308端口,添加规则
    sudo ufw allow 3308/tcp
    
  • CentOS/RHEL:
    firewall-cmd --list-ports
    firewall-cmd --add-port=3308/tcp --permanent
    firewall-cmd --reload
    
  • Windows:打开「Windows Defender防火墙」→「高级设置」→「入站规则」,确认存在允许3308端口TCP连接的规则。

3. 确认主机网络接口状态

检查主机IP是否正常绑定在网卡上:

# Linux
ip addr
# Windows
ipconfig

确认192.168.10.153对应的网卡处于启用状态,尝试用主机其他可用IP访问容器,排查是否为特定网卡故障。

4. 检查Docker网络配置

  • 查看容器实际网络绑定情况:
    docker inspect ua-database | grep -A 5 "Ports"
    
    确认输出中0.0.0.0:3308->3308/tcp存在。
  • 尝试重启Docker服务重置网络栈:
    # Linux
    sudo systemctl restart docker
    # Windows
    # 在「服务」面板中重启Docker Desktop服务
    

5. 重新创建容器排除状态残留

旧容器可能存在异常状态,删除后重新创建:

docker-compose down
docker-compose up -d

6. 精准测试端口连通性

避免用curl(默认HTTP协议)测试TCP端口,改用以下命令:

# 用telnet测试TCP连通性
telnet 192.168.10.153 3308
# 或用nc工具
nc -zv 192.168.10.153 3308
  • 若提示「Connection refused」:容器内服务未监听0.0.0.0,回到步骤1检查MariaDB配置。
  • 若提示「Connection timed out」:主机防火墙或网络路由拦截了请求,回到步骤2、3排查。

7. 排查系统或Docker版本变更

两天前无改动突然失效,可能是系统自动更新导致:

  • 检查Docker版本是否变更:docker --version,若有更新,尝试回滚到之前可用的版本。
  • 检查系统内核或网络相关组件更新记录,排查是否为更新导致的网络兼容性问题。

内容的提问来源于stack exchange,提问作者Thibault Cuvillie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:53:13