У меня 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 и все его контейнеры использовать исходящий IP 5.6.7.8 вместо 1.2.3.4?
Похоже, что нет простого способа сделать это с помощью докера - по крайней мере, на данный момент.
В итоге я просто использовал 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
.
Используйте параметр командной строки --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