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

如何配置Docker及Docker Compose使用多网卡主机的ens192网卡通信

配置Docker使用指定网卡(ens192)并通过Docker Compose以host模式启动服务

一、修改Docker Daemon配置,指定默认通信网卡

Docker默认会选取主机默认路由对应的网卡,要切换为ens192,需修改daemon配置:

  1. 编辑(或创建)Docker daemon配置文件:
    sudo vi /etc/docker/daemon.json
    
  2. 根据需求添加以下配置(替换为ens192实际的子网段,示例假设ens192的IP为192.168.10.10/24):
    • 若要让Docker桥接网络使用ens192所在子网:
      {
        "bip": "192.168.10.1/24",
        "fixed-cidr": "192.168.10.0/24",
        "default-address-pools": [
          {"base": "192.168.10.0/24", "size": 24}
        ]
      }
      
    • 若要让Docker服务直接绑定到ens192的IP:
      {
        "hosts": ["tcp://192.168.10.10:2375", "unix:///var/run/docker.sock"]
      }
      

      注意:使用hosts配置时,不要在systemd的Docker service文件中重复指定-H参数,避免冲突。

  3. 重启Docker服务生效:
    sudo systemctl restart docker
    

二、验证Docker网卡配置

执行以下命令确认配置生效:

# 查看Docker桥接网络信息
docker info | grep -i "bridge"
# 启动测试容器检查网络接口
docker run --rm alpine ip addr

确认容器网络接口使用的是ens192所在的子网段。

三、Docker Compose以host模式启动服务

在docker-compose.yml中指定network_mode: host,容器会直接复用主机网络栈,自动使用ens192网卡(需确保主机路由或服务绑定已指向该网卡)。

示例docker-compose.yml:

version: '3.8'
services:
  target-service:
    image: your-image:latest
    network_mode: host
    # host模式下无需配置端口映射,直接使用主机端口
    environment:
      - APP_BIND_IP=192.168.10.10
    restart: unless-stopped

启动服务:

docker-compose up -d

额外注意事项

  • 若主机多网卡共存,需确保ens192的路由优先级高于其他网卡,或在应用配置中直接指定绑定ens192的IP。
  • 若修改daemon.json后Docker无法启动,检查配置格式是否正确,或子网是否与其他网卡网段冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:12:10