1
resposta

[Dúvida] Usando uma aplicação conteneirizada a partir de uma VM externa na mesma rede

Ao rodar o comando abaixo, preciso saber como fazer para que o meu localhost seja apontado para o ip de uma máquina externa mesma rede, por exemplo:
docker run -d -p 8081:80 --name static-site-container dockersamples/static-site

o meu terminal está em uma VM Ubuntu com IP: 192.168.0.136
Para eu acessar de outro computador na mesma rede (IP: 192.18.0.114) a aplicação, teria de usar no navegador: http://192.168.0.136/8081
O comando docker run -d -p 192.168.0.136:8081:80 --name static-site-container dockersamples/static-site
Funcionaria da mesma forma? vi que a estrutura do comando permite informar o ip

Grato

1 resposta

Olá, Nilvio!

No caso do comando docker run -p, o formato padrão é HOST_PORT:CONTAINER_PORT. Quando você usa -p 8081:80, o Docker publica a porta 8081 da máquina host (sua VM) para a porta 80 do container. Isso significa que qualquer máquina da mesma rede que consiga acessar o IP da VM poderá abrir a aplicação usando http://192.168.0.136:8081.

Já usar -p 192.168.0.136:8081:80 também funciona, mas nesse caso você está apenas especificando explicitamente em qual interface/IP da máquina host a porta será publicada. Na prática, se a VM já está acessível na rede, o comportamento para quem acessa de fora será o mesmo (http://192.168.0.136:8081). Uma curiosidade é que essa sintaxe costuma ser usada quando a máquina possui mais de uma interface de rede e você quer limitar em qual IP o serviço ficará disponível.

Bons estudos;