Como mapear uma porta personalizada de um contêiner Docker para a máquina hospedeira

DockerBeginner
Pratique Agora

Introdução

Docker é uma plataforma popular de contentores que permite empacotar e implantar aplicações num ambiente consistente e isolado. Uma das funcionalidades chave do Docker é a capacidade de mapear portas de um contêiner para a máquina hospedeira, permitindo o acesso às suas aplicações em contentores do exterior. Neste tutorial, exploraremos como mapear uma porta personalizada de um contêiner Docker para a máquina hospedeira, fornecendo-lhe o conhecimento para gerir e aceder eficazmente às suas aplicações baseadas em Docker.

Introdução ao Mapeamento de Portas Docker

Docker é uma plataforma popular de contentores que permite aos desenvolvedores empacotar suas aplicações e dependências em ambientes isolados chamados contentores. Uma das funcionalidades chave do Docker é a capacidade de mapear portas da máquina hospedeira para o contêiner, permitindo a comunicação entre o contêiner e o mundo exterior.

Quando você executa um contêiner Docker, ele normalmente roda em sua própria rede interna e escuta em uma porta específica. Para acessar a aplicação em execução dentro do contêiner, você precisa mapear a porta do contêiner para uma porta na máquina hospedeira.

O mapeamento de portas é essencial para diversos casos de uso, como:

  1. Aplicações Web: Quando você executa um servidor web dentro de um contêiner Docker, precisa mapear a porta do contêiner (por exemplo, 80 ou 8080) para uma porta na máquina hospedeira para que os usuários possam acessar a aplicação através de um navegador web.

  2. Bancos de Dados: Quando você executa um servidor de banco de dados dentro de um contêiner Docker, precisa mapear a porta do contêiner (por exemplo, 3306 para MySQL) para uma porta na máquina hospedeira para que outras aplicações possam se conectar ao banco de dados.

  3. Microserviços: Em uma arquitetura de microserviços, cada serviço pode rodar em seu próprio contêiner Docker. O mapeamento de portas é necessário para permitir a comunicação entre diferentes serviços e o mundo exterior.

Compreendendo o conceito de mapeamento de portas Docker, você pode gerenciar eficazmente a conectividade de rede de suas aplicações em contentores e garantir que elas possam ser acessadas a partir da máquina hospedeira ou de outros clientes de rede.

Mapeamento de uma Porta Personalizada para um Contêiner Docker

Para mapear uma porta personalizada da máquina hospedeira para um contêiner Docker, você pode usar a flag -p ou --publish ao executar o comando docker run.

A sintaxe básica é:

docker run -p <porta_hospedeira>:<porta_container> <nome_imagem>

Aqui está um exemplo:

docker run -p 8080:80 nginx

Neste exemplo, a porta 8080 na máquina hospedeira é mapeada para a porta 80 dentro do contêiner Nginx. Isso significa que quando você acessa http://localhost:8080 na máquina hospedeira, poderá acessar o servidor web Nginx em execução dentro do contêiner.

Você também pode mapear várias portas especificando a flag -p várias vezes:

docker run -p 8080:80 -p 3306:3306 mysql

Isso mapeará a porta 8080 da hospedeira para a porta 80 do contêiner, e a porta 3306 da hospedeira para a porta 3306 do contêiner.

Se você quiser mapear uma porta disponível aleatória na máquina hospedeira para o contêiner, pode usar a seguinte sintaxe:

docker run -p <porta_container> <nome_imagem>

Por exemplo:

docker run -p 80 nginx

Neste caso, o Docker atribuirá automaticamente uma porta disponível na máquina hospedeira e a mapeará para a porta 80 do contêiner.

Você pode verificar o mapeamento de portas executando o comando docker ps, que mostrará as portas mapeadas:

CONTAINER ID   IMAGE   COMMAND                  PORTS                 NAMES
abc123def456   nginx   "/docker-entrypoint.…"   0.0.0.0:8080->80/tcp   romantic_babbage

Compreendendo como mapear portas personalizadas para contentores Docker, você pode expor suas aplicações em contentores ao mundo exterior e permitir a comunicação entre o contêiner e a máquina hospedeira ou outros clientes de rede.

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.

Resumo

Neste tutorial, você aprendeu a mapear uma porta personalizada de um contêiner Docker para a máquina hospedeira. Compreendendo o processo de mapeamento de portas, agora você pode acessar suas aplicações em contêineres a partir da hospedeira, permitindo interagir e gerenciar seus serviços baseados em Docker de forma mais eficaz. Os casos de uso práticos e exemplos fornecidos neste guia o ajudarão a aplicar esses conceitos aos seus próprios projetos e implantações baseados em Docker.