Expondo Portas em Contêineres Docker
Ao executar aplicações em contêineres Docker, muitas vezes é necessário expor portas ao sistema hospedeiro para que clientes externos possam aceder à aplicação em execução. Por defeito, os contêineres Docker estão isolados da rede hospedeira e as suas portas internas não são acessíveis de fora do contêiner.
Expondo Portas durante a Criação do Contêiner
Para expor uma porta de um contêiner Docker, pode usar o sinalizador -p ou --publish ao criar um novo contêiner. A sintaxe para este comando é:
docker run -p <porta_hospedeira>:<porta_contêiner> <nome_imagem>
Por exemplo, para expor a porta 8080 do contêiner para a porta 8080 no sistema hospedeiro, executaria:
docker run -p 8080:8080 my-java-ee-app
Expondo Múltiplas Portas
Pode expor múltiplas portas especificando o sinalizador -p várias vezes:
docker run -p 8080:8080 -p 3306:3306 my-java-ee-app
Isto expõe a porta 8080 do contêiner para a porta 8080 no hospedeiro, e a porta 3306 do contêiner para a porta 3306 no hospedeiro.
Ligando a uma Interface Hospedeira Específica
Por defeito, o Docker ligará as portas expostas a todas as interfaces de rede disponíveis no sistema hospedeiro. Se pretender ligar as portas a uma interface específica, pode usar a seguinte sintaxe:
docker run -p <ip_hospedeiro>:<porta_hospedeira>:<porta_contêiner> <nome_imagem>
Por exemplo, para ligar a porta 8080 na interface 192.168.1.100 do hospedeiro à porta 8080 no contêiner, executaria:
docker run -p 192.168.1.100:8080:8080 my-java-ee-app
Compreendendo como expor portas em contêineres Docker, pode garantir que as suas aplicações Java EE em execução em contêineres sejam acessíveis a clientes externos.