我有 3 个网络接口:docker0
、eth0
和eth0:0
(别名)。
auto eth0
iface eth0 inet static
address 1.2.3.4
netmask 255.255.255.0
network 1.2.3.0
broadcast 1.2.3.255
gateway 1.2.3.254
auto eth0:0
iface eth0:0 inet static
address 5.6.7.8
netmask 255.255.255.255
broadcast 5.6.7.8
docker0
是docker自动创建的桥。
让 Docker 及其所有容器使用出站 IP 5.6.7.8 而不是 1.2.3.4 的最简单方法是什么?
答案1
至少目前看来,没有简单的方法可以用 docker 来实现这一点。
我最终只是使用 SNAT:
iptables -t nat -I POSTROUTING -p all -s 172.17.0.0/16 -j SNAT --to-source 5.6.7.8
172.17.0.0/16
是 使用的子网docker0
。
答案2
使用--ip命令行参数。
# echo 'DOCKER_OPTS="$DOCKER_OPTS --ip=5.6.7.8"' >> /etc/default/docker
# docker help
...
--ip=0.0.0.0 Default IP address to use when binding container ports