Estou usando o Docker para Mac. Estou executando um microsserviço baseado em nodejs em um contêiner Docker. Quero testar o microsserviço do nó por meio do navegador. Como obter o endereço IP do docker container em execução?
Estou usando o Docker para Mac. Estou executando um microsserviço baseado em nodejs em um contêiner Docker. Quero testar o microsserviço do nó por meio do navegador. Como obter o endereço IP do docker container em execução?
Respostas:
Se você não quiser mapear as portas de seu host para o contêiner, poderá acessar diretamente o IP de intervalo do docker para o contêiner. Por padrão, esse intervalo só é acessado de seu host. Você pode verificar os dados de sua rede de contêiner fazendo:
docker inspect <containerNameOrId>
Provavelmente é melhor filtrar:
docker inspect <containerNameOrId> | grep '"IPAddress"' | head -n 1
Normalmente, o intervalo de ip do docker padrão é 172.17.0.0/16
. Seu host deve ser 172.17.0.1
e seu primeiro contêiner deve ser, 172.17.0.2
se tudo estiver normal e você não especificar nenhuma opção especial de rede.
EDITAR Outra maneira mais elegante de usar os recursos do docker em vez de "truque de bash":
docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>
localhost
:)
http://172.17.0.2:anyPort
partir do host. Obviamente, se você deseja acessá-lo usando localhost no host, deve mapear as portas. Vai ver o que o OP quer.
docker run --name struts --rm -i tomcat
2. Obtenha o ip do contêiner (se você tiver apenas um): docker inspect struts | grep '"IPAddress"' | head -n 1
3. Abra-o no navegador do host http://x.x.x.x:8080
. Você pode ver a página padrão do Apache Tomcat.
Use a --format
opção para obter apenas o endereço IP em vez de todas as informações do contêiner:
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>
Para motores docker modernos, use este comando:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
e para motores mais antigos, use:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
se quiser obtê-lo dentro do contêiner, você pode tentar
ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17
Para o meu caso, abaixo funcionou no Mac :
Não consegui acessar IPs de contêiner diretamente no Mac. Eu preciso usarlocalhost
com encaminhamento de porta, por exemplo, se a porta for 8000, entãohttp://localhost:8000
Vejo https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds
A resposta original foi de: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949
Você não pode acessar o IP do docker de fora da máquina host. Se o seu navegador estiver em outra máquina, é melhor mapear a porta do host para a porta do contêiner, passando-p 8080:8080
comando run.
Passando, -p
você pode mapear a porta do host para a porta do contêiner e um proxy é configurado para encaminhar todo o tráfego da referida porta do host para a porta do contêiner designada.