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

Ubuntu 21.04环境下Node容器无法连接MariaDB容器问题求助

问题排查与修复方案

你遇到的核心问题为容器间网络层互通(可ping通)但应用层域名解析/连接失败,对应排查处理步骤如下:

  • 检查容器网络归属与服务名配置
    • Docker的内置DNS服务仅能解析同一自定义网桥下的容器服务名,如果你的两个容器使用不同的docker-compose.yml编排、或者是单独用docker run命令启动,默认会分配到不同的默认网桥,无法通过容器名/服务名互相解析。
    • 修复方案:
      1. 若使用docker-compose编排,将MariaDB和Node应用服务写在同一个docker-compose.yml文件内,无需额外配置网络,默认会加入同一项目网桥,数据库连接地址直接填写compose文件中MariaDB对应的服务名即可(注意不是container_name字段,是服务层级的名称)
      2. 若分开启动容器,先手动创建公共网络:docker network create common-app-net,启动两个容器时都加上参数--network common-app-net即可实现主机名互通
  • 检查Node应用数据库连接配置
    • ENOTFOUND属于Node DNS解析类报错,若填写MariaDB容器IP依旧报错,大概率是连接地址格式错误:比如多余添加了http://等协议头、端口号拼接错误、字符串存在多余转义字符,正确的连接地址格式为[服务名/IP]:3306
    • 进入Node容器shell后执行nc -zv mariadb 3306验证3306端口连通性:若端口连通则直接排查Node代码的连接配置逻辑;若端口不通,检查MariaDB容器配置的bind-address参数是否限制了访问IP,确认MariaDB进程正常监听0.0.0.0:3306
  • 检查docker-compose版本兼容性
    • 你通过apt安装的是v1版本的docker-compose,1.28及以下的旧版本存在偶发的网桥DNS解析异常问题,可执行docker-compose -v查看版本号,若版本过旧建议替换为v2版的Docker Compose插件,兼容性更稳定。

内容的提问来源于stack exchange,提问作者Dan Forsberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:57:04