本地 Docker 容器的“网络端点状态异常”,如何快速修复

故障总结

这次不是业务代码故障,核心是本地 Docker 容器的"网络端点状态异常"。

具体表现:

  • aigc-php-local 容器配置里写着加入网络 docker-compose-local-aigc_host
  • 但实际 docker inspect 看到 NetworkSettings.Networks 是空的 {},说明容器对象没有真正挂到 Docker 网络
  • 因此 PHP 启动时解析不到 redis,在 QueueHelper.php 连接 Redis 直接报错退出
  • aigc-nginx-localaigc-node-local 也出现了同类问题,所以 nginx 又解析不到 aigc-php-local / aigc-node-local

本质上是:

  • 容器"看起来存在"
  • docker compose ps 里也可能显示正常或重启中
  • 但容器实际没有拿到 compose 网络的 DNS 能力,导致服务名解析失败

这次看到的直接报错

  • PHP:
    RedisException: php_network_getaddresses: getaddrinfo failed
  • Nginx:
    host not found in upstream "aigc-php-local"
    host not found in upstream "aigc-node-local"

快速判断方法

先看容器状态:

powershell 复制代码
docker compose -f D:\phpstudy_pro\WWW\zhilin\aigc\docker-compose-local\docker-compose.yaml ps

再看失败日志:

powershell 复制代码
docker logs --tail 100 aigc-php-local
docker logs --tail 100 aigc-nginx-local
docker logs --tail 100 aigc-node-local

再看是不是网络端点丢了:

powershell 复制代码
docker inspect --format '{{json .NetworkSettings.Networks}}' aigc-php-local
docker inspect --format '{{json .NetworkSettings.Networks}}' aigc-nginx-local
docker inspect --format '{{json .NetworkSettings.Networks}}' aigc-node-local

如果输出是 {},基本就可以确定是这类问题。

下次怎么快速修复

优先用最小修复,直接强制重建异常容器:

powershell 复制代码
docker compose -f D:\phpstudy_pro\WWW\zhilin\aigc\docker-compose-local\docker-compose.yaml up -d --force-recreate php
docker compose -f D:\phpstudy_pro\WWW\zhilin\aigc\docker-compose-local\docker-compose.yaml up -d --force-recreate node
docker compose -f D:\phpstudy_pro\WWW\zhilin\aigc\docker-compose-local\docker-compose.yaml up -d --force-recreate nginx

如果你想一步到位,也可以:

powershell 复制代码
docker compose -f D:\phpstudy_pro\WWW\zhilin\aigc\docker-compose-local\docker-compose.yaml up -d --force-recreate

推荐的排查顺序

  1. 先看 php 日志
  2. 如果报 redis/mysql/host not found,立刻检查 NetworkSettings.Networks
  3. 如果是 {},不要先改代码,先 --force-recreate
  4. 然后再看 nginx 是否还报 upstream 解析失败
  5. 最后用接口实测一次

一套最快恢复命令

powershell 复制代码
docker compose -f D:\phpstudy_pro\WWW\zhilin\aigc\docker-compose-local\docker-compose.yaml up -d --force-recreate php node nginx
docker compose -f D:\phpstudy_pro\WWW\zhilin\aigc\docker-compose-local\docker-compose.yaml ps
docker logs --tail 50 aigc-php-local
docker logs --tail 50 aigc-nginx-local

怎么确认已经恢复

看这几个点:

  • docker compose psphp / node / nginx 都是 Up
  • docker inspect --format '{``{json .NetworkSettings.Networks}}' 容器名 不再是 `{}``
  • php 日志里没有 getaddrinfo failed
  • nginx 日志里没有 host not found in upstream
  • 本地接口能返回 HTTP 200 或至少返回业务层错误,而不是容器层错误

一句话记忆

下次如果看到:

  • getaddrinfo failed
  • host not found in upstream

先别怀疑代码,先查容器是不是"名义上在网络里,实际上没挂上网络端点";如果是,直接 docker compose up -d --force-recreate 重建对应容器。

相关推荐
IMPYLH20 分钟前
HTML 的 <slot> 元素
前端·网络·html
星恒讯工业路由器1 小时前
“铸链计划”第三批启动,工业5G产品从“有”到“优”的淘汰赛开始了
网络·物联网·智能路由器·工业物联网·铸链计划·工业5g·工业路由器选型
java_logo2 小时前
Docker 部署填鸭表单完整教程:搭建私有化问卷与表单收集平台
docker·表单·问卷·tduck·轩辕镜像·填鸭表单·tduck platform
玉&心3 小时前
K8s HPA自动扩缩容
docker·云原生·容器·hpa·kubernates
2601_949499943 小时前
工业 POF 器件国产化新思路:芯瑞科技DT‑2532Z 解决安华高 HFBR‑2532Z 供应链卡点
运维·网络·人工智能·科技·光模块
小小ken3 小时前
docker容器(数据)备份及恢复:使用docker-volume-backup项目
docker·容器
Doris__HE3 小时前
【元脑服务器NF8260G7-NF8260M7技术规格分享】
运维·服务器·网络·数据库·性能优化
wdfk_prog3 小时前
ROS教程06:ROS1 Node 启动与停止流程
运维·缓存·docker·容器·ros
白猫不黑3 小时前
CTF是什么?从零理解一场攻防竞赛
网络·web安全·计算机·网络安全·信息安全·ctf·红蓝对抗
阿虎儿3 小时前
2025 年的自托管(Self-Hosting)
docker·容器