Назад | Перейти на главную страницу

Использовать определенный исходящий IP-адрес с Docker

У меня 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