Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

IP válido na rede para o contêiner

Gostaria que meus contêineres tivessem um ip válido na rede para cada um deles, tentei utilizar o drive de rede macvlan, mas não funcionou abaixo as configurações que utilizei.

gateway/dhcp: 192.168.242.1 /24 dns:192.168.100.2

abaixo os comandos que utilizei para montar minha rede e subir meu contêiner:

docker network create -d macvlan    --subnet=192.168.242.0/24 --gateway=192.168.242.1  --dns 192.168.100.2  --ip-range 192.168.242.110/32    -o parent=enp5s0     teste

Subir o contêiner:

docker run -d  --network teste --name alpine alpine ash 

Depois de feito tudo isso, não consegui visualizar na minha rede o contêiner com o ip 192.168.242.110

5 respostas

Olá Thalita, tudo bem? Não entendi completamente sua dúvida, você pode me falar se o que você quer é que cada container tenha um IP diferente é isso? E que esses IP possam ser acessados pela sua rede local é isso? Explica melhor pra gente poder ti dar uma resposta mais exata!

Isso Jonilson quero exatamente que cada contêiner tenha um ip, que possa ser acessado, da minha rede local.

Entendi, agora porém preciso saber, é realmente necessário que cada container da sua máquina tenha um IP fixo diretamente na sua rede local? Porque usando drive Bridge que é o padrão podemos usar o comando:

docker run -d -p 192.168.1.10:8080:3000 <imagem-do-container>

Onde o IP 192.168.1.10 é o IP da sua máquina na rede local, fazendo isso basta ir em outro equipamento da sua rede, como seu celular e acessar o endereço: 192.168.1.10:8080 e você vai conseguir acessar seu IP.

Porque o macvlan atribui um endereço MAC à interface de rede virtual de cada contêiner, porém é muito fácil danificar involuntariamente a sua rede devido à exaustão do endereço IP, isso pode ser um grande problema.

Mas se realmente deseja conseguir um endereço IP na rede local para cada container é melhor usar o Docker Swarm, para orquestar container e nesse ponto vai conseguir atribuir um IP para cada container, você pode ver isso no curso de Docker Swarm.

Se não quiser usar o Docker Swarm pode falar aqui, que podemos tentar uma solução que resolva da melhor forma o seu problema!

Na verdade eu já conhecia essa função, vou fazer o curso de swarm, para ver se acho algo que me atenda. Eu preciso ter gerencia sobre quais redes acessam cada contêiner então meu docker host precisaria atuar meio que como roteador.

solução!

Entendi, é algo realmente bastante complexo, porém isso é para acontecer na sua rede local? Ou você pretende utilizar algum serviço em nuvem como AWS? Acho também algo difícil de fazer, porque você vai ter uma interface física conectada a rede, e essa interface vai ter que direcionar o trafego direto da rede para vários container, isso pode sobrecarregar a máquina, fora que é necessário essa interface está em várias rede em um mesmo momento. O Docker Swarm, é bem interessante para administrar e manipular os container. Pode ser que se encaixe como uma boa solução pra você.