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

[Dúvida] Não consigo acessar o meu container via IP

Bom dia. Estou com um problema para acessar o container via IP. Eu inicio o container com esta linha de comando:

docker run -dp 3001:3000 getting-started

Se eu uso docker inspect na parte de redes ele me dá a informação do IP:

                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",

Assumindo que eu estou mapeando a porta do host 3001 para a porta 3000 do container, quando eu utilizo http://localhost:3001 no ele funciona direitinho, ou seja, tudo ok. PORÉM, quando eu tento acessar via browser http:\\172.17.0.3:3000 ele não chega no container.

Eu gostaria de entender o que está errado. Na verdade, o próprio IP do container é estranho, porque a minha rede é 10.0.x.x.

Alguém tem alguma explicação? Obrigado!

1 resposta
solução!

Olá!

Quando você inicia um container com docker run -dp 3001:3000 getting-started, você está mapeando a porta 3000 do container para a porta 3001 do seu host. Isso significa que você pode acessar o serviço rodando no container através do IP do host (neste caso, localhost) na porta 3001. E isso está funcionando corretamente, como você mencionou.

Agora, quando você tenta acessar diretamente o IP do container (172.17.0.3:3000), isso não funciona porque esse IP é interno à rede do Docker. O Docker cria uma rede bridge padrão (geralmente na faixa 172.17.x.x) para os containers, e esses IPs não são acessíveis diretamente de fora dessa rede.

Para acessar o container via IP diretamente, você teria que estar dentro da mesma rede Docker ou configurar a rede de uma maneira diferente. No entanto, isso geralmente não é necessário, pois o mapeamento de portas resolve a maioria dos casos de uso.

Se a sua rede local é 10.0.x.x e você quer que o container tenha um IP nessa faixa, você pode criar uma rede Docker personalizada. Aqui está um exemplo de como fazer isso:

  1. Crie uma nova rede Docker na faixa 10.0.x.x:

    docker network create --subnet=10.0.0.0/24 my_custom_network
    
  2. Inicie o container na nova rede:

    docker run -dp 3001:3000 --network my_custom_network --ip 10.0.0.3 getting-started
    

Agora, o container terá o IP 10.0.0.3 e você poderá acessá-lo diretamente através desse IP. No entanto, lembre-se de que o mapeamento de portas ainda é a prática recomendada para a maioria dos casos.

Bons estudos!