Pular para o conteúdo principal

Questão de Sistemas Operacionais — Contêineres (Docker, Kubernetes, etc.) — CESPE / CEBRASPE 2025

Sistemas OperacionaisContêineres (Docker, Kubernetes, etc.)
Código
ce418282
Banca
CESPE / CEBRASPE
Órgão
MPE CE
Ano
2025
Cargo
Ana Min ( )

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

  1. CCerto
  2. 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.

  1. 1docker run -d (segundo plano)
  2. 2-p host:container (portas distintas)
  3. 3--name (nome único)
  4. 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.

Gabarito: Certo (C).

Link permanente: /questoes/ce418282