如需更好的阅读模式,可前往我的博客
- 确认需要指定的网卡名称,可以使用
ip a
命令查看。并自行替换以下命令中的 ens224
为你需要指定网卡的名称
用于只有在这个网络下的所有容器路由到指定网卡,默认容器不受影响
docker network create \
--subnet=192.168.9.0/24 \
--gateway=192.168.9.1 \
mynet
echo "100 ens224rt" >> /etc/iproute2/rt_tables
ip route add default via 192.168.11.2 dev ens224 table ens224rt
ip rule add from 192.168.9.0/24 table ens224rt
ip route show table ens224rt
应当确保有一个正确输出,则表示配置正确
docker run -it --rm --network=mynet busybox:latest /bin/sh
若您是做外网分流可以输入下发指令只要正确下载了 index.html
则代表指定成功,否则请检查外网分流(如旁路由)
wget https://www.**.com/
由于网络相关设置默认没有持久保存,重启后会恢复默认,所以我们可以使用最简单稳妥的办法使用系统服务在内核加载阶段网卡启动成功后执行脚本自动配置路由表
/usr/local/bin/ens224rt.sh
#!/bin/bash
# 添加自定义路由表和规则
ip route add default via 192.168.11.2 dev ens224 table ens224rt
ip rule add from 192.168.9.0/24 table ens224rt
/etc/systemd/system/ens224rt.service
[Unit]
Description=Custom routing for Docker 192.168.9.0/24 via ens224
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/ens224rt.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
chmod +x /usr/local/bin/ens224rt.sh
systemctl enable ens224rt.service