如何配置Docker及Docker Compose使用多网卡主机的ens192网卡通信
配置Docker使用指定网卡(ens192)并通过Docker Compose以host模式启动服务
一、修改Docker Daemon配置,指定默认通信网卡
Docker默认会选取主机默认路由对应的网卡,要切换为ens192,需修改daemon配置:
- 编辑(或创建)Docker daemon配置文件:
sudo vi /etc/docker/daemon.json - 根据需求添加以下配置(替换为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参数,避免冲突。
- 若要让Docker桥接网络使用ens192所在子网:
- 重启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
相关产品推荐
相关产品推荐

