A respeito de gerência de contêineres e segurança com Docker, julgue o item a seguir.
Para executar duas instâncias do PostgreSQL em contêineres separados, é correto utilizar os seguintes comandos, mapeando-se portas diferentes do host para a porta padrão do PostgreSQL (5432) no contêiner.
docker run -d -p 5433:5432 --name postgres_dev postgres docker run -d -p 5434:5432 --name postgres_test postgres
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoC — Certo
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Docker: Mapeamento de Portas e Execução de Múltiplos Contêineres
Gabarito: Certo (C). Os comandos apresentados estão corretos: cada contêiner PostgreSQL é executado em segundo plano (-d), com um nome único (--name) e com mapeamento de portas do host (5433 e 5434) para a porta padrão do PostgreSQL no contêiner (5432), utilizando a flag -p. Isso permite que duas instâncias do PostgreSQL rodem simultaneamente em contêineres separados, sem conflito de portas no host.
O Docker é uma plataforma de virtualização de nível de sistema operacional que empacota aplicações e suas dependências em contêineres isolados. Cada contêiner é executado por um único kernel do sistema operacional, compartilhando recursos do host, mas com isolamento de processos, rede e sistema de arquivos. Para executar múltiplas instâncias de um mesmo serviço, como o PostgreSQL, é necessário gerenciar o mapeamento de portas, pois cada contêiner expõe sua porta interna (5432) e precisa ser acessível por uma porta distinta no host.
A flag -p (ou --publish) do comando docker run realiza o mapeamento de portas no formato host_port:container_port. No exemplo, o primeiro comando mapeia a porta 5433 do host para a porta 5432 do contêiner postgres_dev, e o segundo mapeia a porta 5434 do host para a porta 5432 do contêiner postgres_test. Como as portas do host são diferentes (5433 e 5434), não há conflito, e ambos os contêineres podem ser acessados simultaneamente. A flag -d (detached) executa os contêineres em segundo plano, e --name atribui nomes únicos para facilitar a gestão.
Na prática, se um cliente tentar se conectar ao PostgreSQL, ele usará a porta do host correspondente: localhost:5433 para o contêiner postgres_dev e localhost:5434 para o postgres_test. Internamente, ambos os contêineres escutam na porta padrão 5432, mas o Docker redireciona o tráfego corretamente. Essa abordagem é comum em ambientes de desenvolvimento e teste, onde é necessário rodar múltiplas versões ou configurações do mesmo banco de dados.
A pegadinha que a banca poderia explorar é a tentação de usar a mesma porta do host para ambos os contêineres, o que causaria erro de conflito de porta. No entanto, a questão apresenta corretamente portas diferentes no host, tornando a afirmação verdadeira. Além disso, é importante notar que o mapeamento de portas é uma prática padrão e não compromete a segurança, desde que as portas expostas sejam controladas adequadamente.
1docker run -d (segundo plano)
2-p host:container (portas distintas)
3--name (nome único)
4Acesso via porta do host
LEVEL · soulevel.com.br
Item — ✅ CERTO
A afirmação está correta. Os comandos utilizam a flag -p para mapear portas distintas do host (5433 e 5434) para a porta padrão do PostgreSQL no contêiner (5432), permitindo que duas instâncias do PostgreSQL rodem em contêineres separados sem conflito. A flag -d executa os contêineres em segundo plano, e --name atribui nomes únicos, o que é uma prática correta e comum.