Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

O funcionamento de Docker Network

Sempre tive a vontade de ter um servidor para que eu pudesse aprender sobre DevOps e etc.. Eis que surge um antigo computador aqui com configurações razoáveis: i5, 8GB RAM e 500Gb HDD. Comecei a estudar sobre o Docker e me perguntei se sempre teria que fazer um bind das portas reais para as instâncias, mas vejo na documentação 'docker network' que devemos passar o ip da rede e depois conectar os conteiners a ela. Segue abaixo algumas referências:

Depois de ler estes artigos, fiquei com algumas dúvidas.

Como o computador é interpretado pelos containers?

Quando crio essa network do docker, o servidor passa a ser um roteador para os conteiners?

E os recursos da máquina?

O docker já necessita de no mínimo 2 GB de ram e etc para ser instalado, com a criação de uma docker network, como fica o consumo de memória?

Como na vida real, é possível conectar duas redes?

Digamos que eu tenha o seguinte cenário: Imagem Ilustrativa

Preciso configurar algo em minha rede para que do Meu Notebook consiga acessar o banco de dados x.27.1 e x.28.1 ou o ssh de x.28.2?

Quando vou me conectar com x.25.129 eu não preciso colocar o IP dele, apenas o nome ou seja:

~$ ssh sa@gipsydanger

Sim, ~são nomes de Jaegers.

Então para conectar com essas outras instâncias localizadas em x.27.x e x.28.x eu necessitaria de utilizar seu IP?

~$ ssh sa@192.168.27.1

Se puder informar mais coisas que eu possa fazer para aprender mais eu agradeceria.

Extra

Se por acaso eu quisesse criar um NameServer utilizando o BIND do ubuntu para toda a rede local em 192.168.x.x teria que alterar alguma configuração em meu roteador? Isso prejudicaria minha performance de internet?

1 resposta
solução!

Olá Márcio, tudo bem?

Pra ser sincero não sou especialista no docker, mas pelo que entendo seria o seguinte:

Quando instalamos o docker, por padrão teremos 3 redes, uma delas será a docker0 que seria o bridge. Quando temos um container, podemos configurar a qual rede esse container será conectado, se não configurarmos nada, por padrão teremos a conexão com o docker0.

Essa rede do docker0 será a responsável por alocar os endereços IP para os containers conectadas a ela, sendo o default gateway para comunicação dos containers com o mundo externo. Dessa forma, pode-se fazer uma analogia de que o docker0 seria um "roteador" dos containers. Quando nós temos dois containers conectados no docker0, eles estarão dentro da mesma rede e dessa forma, toda comunicação entre os containers será feita a nível do docker0.

Para acessar recursos externos o docker0 faz uma tradução dos endereços IP dos containers para o endereço do host da máquina, uma tradução conhecida como NAT. Para poder acessar os containers vindo de um usuário externo, você precisaria expor as suas portas do container para que possa ser feito assim um redirecionamento de portas, seria algo como, por exemplo:

docker run -d -p 80:80 apache

Com isso, estamos expondo a porta 80 do container a porta 80 do host, dessa forma, os usuários externos que tenham acesso ao host poderiam usar a porta 80 do host para comunicação com o container.

Abs