Casos de Uso Práticos e Exemplos
Executando um Servidor Web
Suponha que você tem uma aplicação web em execução em um contêiner Docker que escuta na porta 80 dentro do contêiner. Para tornar a aplicação acessível a partir da máquina hospedeira, você pode mapear a porta 80 do contêiner para uma porta personalizada na hospedeira, como 8080:
docker run -p 8080:80 my-web-app
Agora, você pode acessar a aplicação web visitando http://localhost:8080 na máquina hospedeira.
Expondo um Servidor de Banco de Dados
Se você tiver um servidor de banco de dados (por exemplo, MySQL) em execução em um contêiner Docker, pode mapear a porta do banco de dados do contêiner (por exemplo, 3306) para uma porta personalizada na hospedeira:
docker run -p 3306:3306 mysql
Isso permitirá que outras aplicações em execução na máquina hospedeira se conectem ao servidor de banco de dados MySQL dentro do contêiner usando a porta 3306 da hospedeira.
Mapeamento de Múltiplas Portas
Em um cenário mais complexo, você pode ter uma aplicação multicamadas onde diferentes componentes (por exemplo, servidor web, servidor de aplicação, banco de dados) rodam em contentores Docker separados. Você pode mapear múltiplas portas para expor esses componentes:
docker run -p 8080:80 -p 8000:8000 -p 3306:3306 my-app
Isso mapeará a porta 8080 da hospedeira para a porta 80 do contêiner (servidor web), a porta 8000 da hospedeira para a porta 8000 do contêiner (servidor de aplicação) e a porta 3306 da hospedeira para a porta 3306 do contêiner (servidor de banco de dados).
Usando Mapeamento de Porta Aleatório
Se você não quiser especificar uma porta específica na máquina hospedeira, pode deixar o Docker atribuir automaticamente uma porta disponível:
docker run -p 80 my-web-app
Neste caso, o Docker mapeará a porta 80 do contêiner para uma porta disponível na máquina hospedeira. Você pode usar o comando docker ps para ver a porta atribuída.
Compreendendo esses casos de uso práticos e exemplos, você pode aproveitar eficazmente os recursos de mapeamento de portas do Docker para expor suas aplicações e serviços em contentores ao mundo exterior, permitindo comunicação e acesso sem problemas às suas aplicações.