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

Docker内置DNS功能突发故障,容器名访问失效求助

Docker容器名DNS解析故障排查

一直通过Docker容器名实现服务间访问(例如执行curl http://container_name),该方式正常运行数月后突发故障:Nginx无法转发http://container_name类请求,宿主机执行curl http://container_name也无法成功。

相关环境配置

1. Docker网络列表(docker network ls输出)

NETWORK ID     NAME                 DRIVER    SCOPE
ecbfafa9fccf   bridge               bridge    local
b1aac67cfbfa   myapp-api_default   bridge    local
5195101110d3   host                 host      local
d90ca5db218d   none                 null      local

2. 自定义网络详情(docker network inspect myapp-api_default输出)

[
    {
        "Name": "myapp-api_default",
        "Id": "b1aac67cfbfa2923d5ae88a26e8729159f34e1ae083944e385a23047a7fc7237",
        "Created": "2022-09-28T18:21:57.202490009+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.22.0.0/16",
                    "Gateway": "172.22.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "850c8c091467b7c92aedff5631869ab2f5603ae48ee4a1efb7f18f2f890154ff": {
                "Name": "app-boot-system-sample",
                "EndpointID": "1497a7ac8726646f24bf82400d69c56bbcacb689d4423ab54db15af586373179",
                "MacAddress": "02:42:ac:16:00:05",
                "IPv4Address": "172.22.0.5/16",
                "IPv6Address": ""
            },
            "c819074103a5b108d21b836afd1c156036e13f523b44eb5002e13edf48d9f825": {
                "Name": "sample-tenant-pc",
                "EndpointID": "d4ef531762a117132cbd40dee729cdf2458061e2444d35fc7968411676329e7b",
                "MacAddress": "02:42:ac:16:00:04",
                "IPv4Address": "172.22.0.4/16",
                "IPv6Address": ""
            },
            "d04e0c550c95da196844c160ca9b9f80f99e3536f92da55d6e9f18533a381802": {
                "Name": "sample-event-pc",
                "EndpointID": "71bb31e965df8f47cfcc32685594803496bf77ad396854b5dc57851467f99996",
                "MacAddress": "02:42:ac:16:00:07",
                "IPv4Address": "172.22.0.7/16",
                "IPv6Address": ""
            },
            "ee6589ced2f5080b9f3641104262f430da8f37e1278f094f78a45e2414a607f4": {
                "Name": "app-boot-redis-sample",
                "EndpointID": "be41952c5709d7a843b9b2ce3276bd7ac8e951ab653ba478d3a8f7cf7fe9599a",
                "MacAddress": "02:42:ac:16:00:03",
                "IPv4Address": "172.22.0.3/16",
                "IPv6Address": ""
            },
            "fd9196fc0fee67de364d6be37581e4fd9827b2983a332995269af78817828bbd": {
                "Name": "sample-org-pc",
                "EndpointID": "a0fd805ee5705533f58b7f0e3f1cbdb0a20abc1a01057bd23a2a5161d0c5181c",
                "MacAddress": "02:42:ac:16:00:02",
                "IPv4Address": "172.22.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "myapp-api_default",
            "com.docker.compose.project": "myapp-api",
            "com.docker.compose.version": "1.26.2"
        }
    }
]

3. sample-tenant-pc的Docker Compose配置

version: '2.4'
services:
  sample-tenant-pc:
    build:
      context: .
    restart: always
    container_name: sample-tenant-pc
    image: sample-tenant-pc
    ports:
      - 9001:80
    networks:
      - myapp-api_default
      
networks:
  myapp-api_default:
    external: false
    name: myapp-api_default

可能的故障原因及排查方向

1. Docker内置DNS服务异常

Docker依赖内置DNS服务处理容器名解析,若该服务崩溃或状态异常,会直接导致解析失败:

  • 检查Docker守护进程状态:执行systemctl status docker(Linux)或查看Docker Desktop运行状态(Windows/macOS)
  • 重启Docker服务:执行systemctl restart docker,重启后验证容器名解析是否恢复

2. 自定义网络DNS注册失效

虽然网络配置显示容器已接入,但可能存在DNS缓存或注册信息异常:

  • 重启所有关联容器:先停止容器,再重新启动,让容器重新向网络DNS注册自身信息
  • 重建自定义网络:备份容器数据后,删除现有myapp-api_default网络,再通过docker-compose重新创建网络并启动容器

3. 宿主机DNS配置冲突

宿主机无法解析容器名,说明宿主机DNS未指向Docker内置DNS:

  • 检查Linux宿主机/etc/resolv.conf,确认是否包含自定义网络网关(如172.22.0.1)作为DNS服务器
  • 若使用systemd-resolved,需确保Docker网络的DNS规则被正确识别

4. 容器服务或网络接口异常

部分容器可能存在端口未监听、网络接口故障:

  • 进入容器执行netstat -tulpn,确认服务端口(如80)是否正常监听
  • 用容器IP直接访问验证:例如curl http://172.22.0.4,若能访问则是DNS解析问题;若不能则是容器服务本身故障

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:01:02