查找容器IP

发布时间:2026/6/11 17:47:51

查找容器IP 既然你的应用和数据库都是部署在 Docker 上的那么之前使用的localhost或mysqld命令就完全失效了。在 Docker 环境中网络架构和宿主机是隔离的这也是导致你连接超时Connection is not available, request timed out after 30000ms的根本原因。以下是针对 Docker 环境的精准排查和解决步骤1. 检查数据库容器是否正常运行首先你需要确认数据库的 Docker 容器是否真的在运行。在服务器上执行docker ps -a | grep mysql如果状态STATUS是Up说明容器在运行。如果状态是Exited或不断重启Restarting说明数据库挂了。请使用docker logs 容器ID查看报错日志。2. 修改数据库连接 IP最关键的一步在 Docker 中你的 Java 应用容器内的localhost指的是它自己而不是宿主机的数据库容器。你需要将连接地址改为数据库容器的 IP或Docker 网络别名。如何获取正确的 IP找到数据库容器的 ID 或名称docker ps获取其内部 IPdocker inspect 容器ID或名称 | grep IPAddress将application.properties中的 URL 修改为jdbc:mysql://获取到的IP:3306/newbee_mall_db?...(注如果你使用了 Docker Compose 编排可以直接使用数据库的服务名例如jdbc:mysql://db:3306/...)3. 排查容器内的资源竞争与启动顺序在 Docker 环境中容器之间的资源竞争可能导致性能问题。如果你的应用启动速度比数据库快应用会在数据库完全初始化前尝试连接从而导致连接超时。解决方案依赖管理确保应用启动依赖于数据库容器完全运行。如果使用 Docker Compose请配置depends_on及健康检查healthcheck。重试机制在应用中实现重试机制或在 HikariCP 中配置初始化允许失败并慢慢重试# 初始化时允许失败慢慢重试 spring.datasource.hikari.initialization-fail-timeout-1 spring.datasource.hikari.connection-timeout300004. 检查 Docker 资源限制如果数据库服务器或应用程序容器资源不足CPU、内存可能会出现连接超时。使用docker stats命令监控容器内的 CPU 和内存使用情况识别是否存在资源瓶颈。确保为数据库容器分配了足够的内存MySQL 建议至少 512M 以上。 快速验证建议你可以直接进入你的 Java 应用容器内部尝试连接数据库以隔离网络问题# 进入应用容器 docker exec -it 你的java应用容器ID /bin/bash # 在容器内尝试 ping 数据库 IP 或 telnet 3306 端口 ping 数据库容器IP如果 ping 不通或连不上说明是 Docker 网络配置问题如果能通请仔细检查数据库的账号密码及newbee_mall_db库是否已在该容器中创建。

相关新闻