Pular para o conteúdo principal

Questão de Sistemas Operacionais — Contêineres (Docker, Kubernetes, etc.) — VUNESP 2024

Sistemas OperacionaisContêineres (Docker, Kubernetes, etc.)
Código
vu212392
Banca
VUNESP
Órgão
APS
Ano
2024
Cargo
Esp Port ( )
A respeito de contêineres Docker, é correto afirmar que
  1. Acada contêiner é executado em sua própria máquina virtual com seu próprio sistema operacional convidado.
  2. Brestringem-se ao ambiente Linux, não sendo possível utilizar o Docker em ambientes Windows.
  3. Csão executados por hipervisores tipo 1, os quais possuem melhor desempenho que hipervisores tipo 2.
  4. Dos aplicativos baseados em contêiner, durante sua execução, compartilham o mesmo kernel do sistema operacional do host.
  5. Epor segurança, ainda que múltiplos contêineres sejam executados no mesmo host Docker, eles não podem se comunicar entre si via TCP/IP.
Revelar gabarito e comentário

GabaritoD — os aplicativos baseados em contêiner, durante sua execução, compartilham o mesmo kernel do sistema operacional do host.

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”.

Contêineres Docker: compartilhamento do kernel do host

Gabarito: letra D. Contêineres Docker são uma forma de virtualização em nível de sistema operacional: todos os contêineres em execução em um mesmo host compartilham o kernel do sistema operacional do host, diferentemente das máquinas virtuais, que possuem um sistema operacional convidado completo. Essa é a característica central que define a arquitetura de contêineres e que a alternativa D corretamente descreve.

Para entender por que a alternativa D é a correta, é preciso compreender a diferença fundamental entre contêineres e máquinas virtuais. Uma máquina virtual (VM) é uma emulação completa de um computador, com seu próprio sistema operacional convidado (guest OS), que roda sobre um hipervisor. O hipervisor pode ser de tipo 1 (nativo, que executa diretamente sobre o hardware, como o VMware ESXi e o Xen) ou de tipo 2 (convidado, que roda como um processo de um sistema operacional host, como o VMware Workstation e o VirtualBox). Cada VM é fortemente isolada e consome muitos recursos, pois precisa de um sistema operacional inteiro para funcionar.

Os contêineres, por outro lado, não virtualizam o hardware. Eles virtualizam o sistema operacional: em vez de cada aplicação ter seu próprio SO, todas as aplicações em contêineres compartilham o kernel do host. O Docker, por exemplo, utiliza tecnologias do núcleo Linux como namespaces (para isolar processos, rede, sistema de arquivos, etc.) e cgroups (para limitar e gerenciar recursos como CPU, memória e I/O). Isso torna os contêineres muito mais leves e rápidos de iniciar do que as VMs, pois não há um sistema operacional inteiro para bootar.

Na prática, imagine que você tem um servidor Linux rodando o Docker. Você pode executar um contêiner com um servidor web Nginx e outro com um banco de dados PostgreSQL. Ambos os contêineres usam o mesmo kernel Linux do servidor, mas cada um tem seu próprio sistema de arquivos, bibliotecas e processos isolados. Eles podem se comunicar entre si via rede (TCP/IP), mas não enxergam os processos um do outro diretamente, a menos que isso seja configurado.

A pegadinha desta questão está em confundir contêineres com máquinas virtuais. A banca explora exatamente essa confusão: quem não domina o conceito pode achar que contêineres são como VMs (alternativa A), que dependem de hipervisores (alternativa C), ou que são limitados a um único sistema operacional (alternativa B). A alternativa E também é uma pegadinha, pois sugere que contêineres não podem se comunicar, o que é falso — eles se comunicam via rede normalmente.

Guarde a distinção central: máquina virtual = virtualização de hardware (cada VM tem seu próprio SO convidado); contêiner = virtualização de sistema operacional (todos compartilham o kernel do host). É exatamente nessa fronteira que as alternativas se dividem.

1Virtualização de SO
Compartilham kernel do host
Isolamento por namespaces
Limite de recursos por cgroups
2vs. Máquina virtual
Virtualização de hardware
SO convidado próprio
Executa sobre hipervisor
3Comunicação
Via TCP/IP (rede bridge)
Docker em Windows/macOS
Contêineres Docker
LEVELsoulevel.com.br
Contêineres Docker: Virtualização de SO (Compartilham kernel do host, Isolamento por namespaces, Limite de recursos por cgroups); vs. Máquina virtual (Virtualização de hardware, SO convidado próprio, Executa sobre hipervisor); Comunicação (Via TCP/IP (rede bridge), Docker em Windows/macOS)

Alternativa A — ❌ Incorreta

Afirma que cada contêiner é executado em sua própria máquina virtual com seu próprio sistema operacional convidado. Isso é exatamente o oposto da arquitetura de contêineres. Contêineres não são máquinas virtuais: eles não possuem um sistema operacional convidado próprio. Todos os contêineres em um host compartilham o kernel do sistema operacional do host. A alternativa descreve o funcionamento de uma máquina virtual, não de um contêiner.

Alternativa B — ❌ Incorreta

Afirma que os contêineres se restringem ao ambiente Linux, não sendo possível usar o Docker em ambientes Windows. Isso é falso. Embora o Docker tenha sido originalmente criado para Linux, hoje é possível executar o Docker em ambientes Windows (e macOS) de duas formas principais: usando uma máquina virtual Linux subjacente (como o Docker Desktop faz, executando um VM Linux leve) ou usando contêineres nativos do Windows (com imagens baseadas em Windows). Portanto, o Docker não se restringe ao Linux.

Alternativa C — ❌ Incorreta

Afirma que os contêineres são executados por hipervisores tipo 1, que possuem melhor desempenho que hipervisores tipo 2. Há dois erros aqui. Primeiro, contêineres não são executados por hipervisores — eles são executados diretamente sobre o kernel do host, usando namespaces e cgroups. Segundo, embora seja verdade que hipervisores tipo 1 (nativos) tenham melhor desempenho que hipervisores tipo 2 (convidados), isso é irrelevante para contêineres, que não usam hipervisores. A alternativa mistura conceitos de virtualização de hardware com virtualização de sistema operacional.

Alternativa D — ✅ Correta ⟵ GABARITO

Afirma que os aplicativos baseados em contêiner, durante sua execução, compartilham o mesmo kernel do sistema operacional do host. Isso é exatamente a definição de contêineres. O Docker, por exemplo, usa o kernel do host para executar todos os contêineres, isolando-os com namespaces e limitando recursos com cgroups. Essa é a característica que diferencia contêineres de máquinas virtuais e que torna os contêineres mais leves e eficientes.

Alternativa E — ❌ Incorreta

Afirma que, por segurança, múltiplos contêineres no mesmo host não podem se comunicar entre si via TCP/IP. Isso é falso. Contêineres podem e devem se comunicar via rede. O Docker, por padrão, cria uma rede bridge que permite que contêineres se comuniquem entre si via TCP/IP. A segurança é uma preocupação, mas não impede a comunicação — ela é gerenciada por políticas de rede e isolamento, não pela proibição de comunicação.

Gabarito: letra D

Link permanente: /questoes/vu212392