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

Docker Compose容器间通信间歇性中断原因及解决咨询

解决Docker引擎更新重启后容器网络通信故障的方案

1. 配置Docker服务重启后自动刷新容器网络关联

修改Docker的systemd服务配置,让Docker启动后自动重新连接所有容器到对应网络,强制刷新DNS和路由配置:

  • 创建并编辑/etc/systemd/system/docker.service.d/restart-containers.conf(目录不存在则先创建):
[Service]
ExecStartPost=/usr/bin/docker network reconnect $(docker network ls -q)
  • 重新加载systemd配置并重启Docker:
systemctl daemon-reload
systemctl restart docker

2. 为Docker Compose项目配置固定自定义网络

默认Compose会生成随机命名网络,更新后易出现配置不兼容。手动指定固定网络:
在docker-compose.yml中添加如下配置:

version: '3.8'
services:
  web:
    # 你的web服务原有配置
    networks:
      - prod-fixed-network
  db:
    # 你的db服务原有配置
    networks:
      - prod-fixed-network
  redis:
    # 你的redis服务原有配置
    networks:
      - prod-fixed-network

networks:
  prod-fixed-network:
    name: my-production-net
    driver: bridge
    ipam:
      config:
        - subnet: 172.25.0.0/16

固定网络名称和子网段,避免Docker更新后重新创建网络导致容器失联。

3. 为容器配置自动重启策略

在docker-compose.yml的每个服务中添加restart: always,确保Docker引擎重启后容器自动重启,重新获取最新网络配置:

services:
  web:
    restart: always
    # 其他服务配置

4. 锁定Docker包版本(替代全量关闭yum自动更新)

仅锁定Docker相关包的版本,防止yum自动更新触发故障:

  • 安装yum版本锁定插件:
yum install yum-plugin-versionlock
  • 查看当前Docker版本:docker --version,然后锁定对应包:
yum versionlock add docker-ce docker-ce-cli containerd.io

后续仅手动解锁后才能更新Docker包。

5. 配置Docker引擎使用固定外部DNS

修改Docker守护进程配置,指定公共DNS服务器,避免依赖内置DNS服务重启后的解析异常:
编辑/etc/docker/daemon.json(不存在则创建):

{
  "dns": ["8.8.8.8", "8.8.4.4"]
}

重启Docker服务生效:

systemctl restart docker

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:58:20