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:
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.
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.
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:
docker run -d -P --name mynginx nginx
Para saber quais portas foram atribuídas, use o comando docker port
:
docker port mynginx
A saída será algo como:
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
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
- "8443:443"
Roda o Docker Compose:
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.
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:
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.
GO TO FULL VERSION