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

Docker容器无法连接远程MariaDB服务器问题求助

解决思路

1. 先排查服务器与数据库的网络连通性

  • 先在自有服务器的宿主机上测试连接:执行 mysql -h xxxxxxxxxxx.jcloud-ver-jpc.ik-server.com -u 你的用户名 -p,如果宿主机都连不上,说明是服务器到数据库的网络问题——比如数据库的安全组/白名单没加服务器IP、服务器防火墙拦截了数据库端口,或者数据库端没对外开放监听。
  • 如果宿主机能连,再进入容器内部测试:启动容器时临时替换CMD为bash(docker run -it 你的镜像名 bash),然后在容器里装mariadb-client(apt-get install mariadb-client -y),再用同样的mysql命令测试,看容器能不能解析域名、通数据库端口。

2. 检查Docker网络配置

  • 试试用host模式启动容器:docker run --network host 你的镜像名,让容器直接复用宿主机的网络栈,和本地机器的网络环境一致,看能不能解决连接问题。
  • 检查容器DNS:进入容器后执行cat /etc/resolv.conf,对比宿主机的DNS配置,如果容器DNS不对,启动时手动指定(比如docker run --dns 8.8.8.8 你的镜像名)。

3. 确认数据库的访问控制规则

  • 检查数据库的IP白名单:本地能连说明本地IP在白名单里,服务器的公网IP(或者容器所在的私有IP段)可能没被加入,导致容器连接被拒。
  • 确认数据库监听地址:MariaDB默认可能只监听127.0.0.1,需要修改my.cnf里的bind-address为0.0.0.0(或者允许的IP段),然后重启数据库服务。

4. 代码与依赖的小调整

  • 错误码115可能和连接超时有关,在代码里增加连接超时参数:
    import mariadb
    conn = mariadb.connect(
        host="xxxxxxxxxxx.jcloud-ver-jpc.ik-server.com",
        user="你的用户名",
        password="你的密码",
        database="你的数据库名",
        connect_timeout=30  # 延长超时时间
    )
    
  • 可以简化Dockerfile里的apt安装步骤,减少镜像层数:
    RUN apt-get update && apt-get install -y curl gcc wget libmariadb3 libmariadb-dev
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:45:57