Como configuro os contêineres do docker para comunicação na rede privada?

5

Eu tenho um pequeno cluster na rackspace com uma rede privada no intervalo 192.168.3.0/24. Gostaria que meus serviços de trabalho conversassem entre si usando essa rede, mas não conseguissem descobrir como obter o docker para permitir isso.

Minha configuração ideal seria um único contêiner voltado para o público que faça o proxies das conexões com um trabalhador que possa, então, conversar com vários serviços dentro da rede privada para realizar seu trabalho.

eth0 -> load balancer --> 192.168.3.3:80 --> 192.168.3.5:1234 (db)
                      \-> 192.168.3.4:80 /
                       \> 192.168.3.5:80/

Se todos os funcionários estivessem na mesma máquina, eu poderia realizar isso com docker run --link ... , mas como eles estão em máquinas diferentes, isso não funcionará.

Os trabalhadores no exemplo acima são iniciados com um comando semelhante a este:

docker run -d -p $PRIVATE_IPV4:80:80 myworker

e o banco de dados começou assim:

docker run -d -p $PRIVATE_IPV4:1234:1234 mydb

Do host , posso falar com cada um dos contêineres, mas cada contêiner não pode rotear para nenhum outro contêiner. I.E. curl http://192.168.3.4 funciona do host, mas não de um contêiner em execução no host.

O balanceador de carga, neste caso, é o nginx iniciado assim:

docker run -d -p $PUBLIC_IPV4:80:80 nginx

nginx.conf

upstream app {
  server 192.168.3.3:80;
  server 192.168.3.4:80;
  server 192.168.3.5:80;
}
...

Isto parece ser uma configuração bastante normal. O que estou fazendo errado?

    
por bheatwole 20.12.2014 / 02:56

2 respostas

0

Você pode tentar implementar sua arquitetura em um gerenciador de contêineres como o Kubernetes, além do CoreOS. Existem muitos guias por aí. Este é um passo a passo de uma apresentação no DockerCon link sobre o Gerenciamento de Cluster de Contêineres.

    
por 20.12.2014 / 05:19
0

Atualmente, o Docker por si só não fornece recursos de rede de contêiner. O Weave é um dos mais fáceis de usar soluções SDN de sobreposição. Funciona em qualquer nuvem e até mesmo em várias nuvens.

Eu devo negar, eu sou um dos engenheiros da Weave.

    
por 21.12.2014 / 18:10