Use um IP de saída específico com o Docker

2

Eu tenho três interfaces de rede: docker0 , eth0 e eth0:0 (alias).

    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 é a ponte criada automaticamente pelo docker.

Qual é a maneira mais fácil de fazer o Docker e todos os seus contêineres usarem o IP de saída 5.6.7.8 em vez de 1.2.3.4?

    
por PJ Bergeron 28.04.2015 / 06:00

2 respostas

5

Parece que não há uma maneira fácil de fazer isso com o docker - pelo menos no momento.

O que acabei fazendo é simplesmente usar 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 é a sub-rede usada por docker0 .

    
por 28.04.2015 / 12:54
1

Use o parâmetro da linha de comando --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
    
por 29.04.2015 / 17:58