CodeGym /Cursos /Docker SELF /Publicação de portas de containers

Publicação de portas de containers

Docker SELF
Nível 17 , Lição 3
Disponível

4.1 Conceitos básicos de publicação de portas

Publicação de portas de contêineres no Docker permite que os serviços, que estão rodando dentro dos contêineres, sejam acessíveis a partir de uma rede externa ou do host. Isso é uma parte importante na configuração de aplicações multicontêiner, já que permite interação com serviços como servidores web, bancos de dados e outras aplicações de rede. Nessa aula, vamos ver como publicar portas de contêineres e configurar acesso aos serviços.

Conceitos básicos de publicação de portas

  • Mapeamento de portas: correspondência entre a porta do host e a porta do contêiner.
  • Parâmetro -p/--publish: usado para especificar o mapeamento de portas ao iniciar um contêiner.
  • Parâmetro -P/--publish-all: atribuição automática de portas do host para todas as portas exportadas do contêiner.

Exemplo de uso do parâmetro -p

Ao iniciar um contêiner, você pode usar a opção -p para mapear a porta do host para a porta do contêiner. Formato do comando:

Terminal

docker run -d -p <host_port>:<container_port> <image> 

Exemplo 1: Publicação de porta do servidor web Nginx

Vamos rodar um contêiner com o Nginx e publicar a porta 80 do contêiner na porta 8080 do host.

Agora, o Nginx estará acessível em http://localhost:8080.

Terminal

docker run -d -p 8080:80 --name mynginx nginx 

Exemplo 2: Publicação de múltiplas portas

Você pode publicar várias portas especificando várias opções -p.

Neste exemplo, o Nginx estará acessível via HTTP na porta 8080 e via HTTPS na porta 8443.

Terminal

docker run -d -p 8080:80 -p 8443:443 --name mynginx nginx 

Exemplo de uso do parâmetro -P

O parâmetro -P publica automaticamente todas as portas especificadas no Dockerfile ou nas configurações do contêiner, em portas aleatórias do host.

Exemplo:

Terminal

docker run -d -P --name mynginx nginx 

Para saber quais portas foram atribuídas, use o comando docker port:

Terminal

docker port mynginx

A saída será algo como:

Terminal

80/tcp -> 0.0.0.0:32768
443/tcp -> 0.0.0.0:32769

4.2 Publicação de portas no Docker Compose

Pra definir as portas no Docker Compose, usa a diretiva ports no arquivo docker-compose.yml.

Exemplo de arquivo docker-compose.yml

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
      - "8443:443"

Roda o Docker Compose:

Terminal

docker compose up -d 

Agora o Nginx vai estar acessível nos endereços http://localhost:8080 e https://localhost:8443.

4.3 Parâmetros adicionais para publicação de portas

1. Restringir endereço IP

Você pode restringir o acesso à porta de um container especificando o endereço IP do host.

Exemplo:

Neste exemplo, o Nginx estará acessível apenas pelo host local no endereço http://127.0.0.1:8080.

Terminal

docker run -d -p 127.0.0.1:8080:80 --name mynginx nginx 

2. Usando um intervalo de portas

Você pode especificar um intervalo de portas para publicação.

Exemplo:

Terminal

docker run -d -p 8080-8081:80-81 --name mynginx nginx 

Dicas práticas:

  • Publique apenas as portas necessárias: Publique somente as portas que realmente precisam ser acessadas para minimizar vulnerabilidades potenciais.
  • Use um firewall: Configure um firewall para restringir o acesso às portas publicadas apenas para endereços IP confiáveis.
  • Monitore e registre logs: Use ferramentas de monitoramento e logging para rastrear o acesso às portas publicadas e detectar atividades suspeitas.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION