Questão de Sistemas Operacionais — Contêineres (Docker, Kubernetes, etc.) — CESPE / CEBRASPE 2023
- Código
- ce398139
- Banca
- CESPE / CEBRASPE
- Órgão
- TC DF
- Ano
- 2023
- Cargo
- ACE ( )
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: letra C (CERTO). A afirmação está correta: um contêiner Docker encapsula a aplicação, suas bibliotecas e dependências, mas não o sistema operacional completo — todos os contêineres em um mesmo host compartilham o kernel do sistema operacional hospedeiro. Por isso, é possível executar contêineres baseados em diferentes distribuições Linux (como Ubuntu, Alpine, CentOS) no mesmo servidor Docker, desde que sejam compatíveis com o kernel do host. Essa é a essência da virtualização em nível de sistema operacional, que difere das máquinas virtuais tradicionais.
Para entender por que a afirmação é verdadeira, é preciso compreender a arquitetura do Docker. Diferentemente de uma máquina virtual, que virtualiza o hardware e executa um sistema operacional convidado completo (com seu próprio kernel), o Docker utiliza os recursos de isolamento do kernel Linux — como namespaces e cgroups — para criar ambientes isolados chamados contêineres. Cada contêiner tem seu próprio sistema de arquivos, processos, rede e usuários, mas todos compartilham o mesmo kernel do host. Isso significa que o contêiner não inclui um sistema operacional completo; ele inclui apenas a aplicação e as bibliotecas necessárias para executá-la, além de arquivos de configuração.
O texto de apoio sobre Docker confirma essa visão: "Todos os contêineres são executados por um único kernel do sistema operacional e, portanto, usam menos recursos do que as máquinas virtuais." E ainda: "O Docker é uma alternativa de virtualização em que o kernel da máquina hospedeira é compartilhado com a máquina virtualizada ou o software em operação." Essa é a característica central que permite que contêineres com diferentes distribuições Linux coexistam no mesmo host: como o kernel é compartilhado, o que varia entre os contêineres é apenas o espaço de usuário (bibliotecas, binários, configurações).
A pegadinha da questão está em afirmar que o contêiner encapsula "o sistema operacional". Se isso fosse verdade, cada contêiner teria seu próprio kernel, o que não ocorre. O que o contêiner encapsula é o ambiente de execução — ou seja, as bibliotecas e dependências da aplicação — mas não o kernel. Essa distinção é fundamental e frequentemente cobrada em concursos. A banca explora exatamente essa confusão entre contêiner e máquina virtual: enquanto a VM inclui um SO completo, o contêiner compartilha o kernel do host.
Na prática, imagine um servidor rodando Linux. Nele, você pode executar um contêiner baseado em Ubuntu, outro baseado em Alpine e outro baseado em CentOS, todos simultaneamente. Isso é possível porque todos usam o mesmo kernel Linux do host. Se o host fosse Windows, por exemplo, não seria possível rodar contêineres Linux nativamente (sem uma camada de virtualização adicional), justamente porque o kernel seria incompatível. Essa é a razão pela qual a afirmação do enunciado está correta: no mesmo servidor Docker, podem existir contêineres com sistemas operacionais diferentes (desde que todos sejam compatíveis com o kernel do host).
A banca tenta fazer você acreditar que o contêiner encapsula o sistema operacional completo, como uma máquina virtual. Mas o contêiner não inclui o kernel — ele compartilha o kernel do host. A confusão entre contêiner e VM é clássica: a VM tem SO próprio; o contêiner não. Lembre-se: contêiner = aplicação + bibliotecas; VM = SO completo + aplicação.
A afirmação está correta. O contêiner Docker encapsula a aplicação e o ambiente de execução (bibliotecas, dependências, arquivos de configuração), mas não o sistema operacional completo. Todos os contêineres em um mesmo host compartilham o kernel do sistema operacional hospedeiro. Por isso, é possível ter contêineres com diferentes distribuições Linux (sistemas operacionais diferentes) rodando no mesmo servidor Docker, desde que sejam compatíveis com o kernel do host. Essa é a característica da virtualização em nível de sistema operacional, que permite maior eficiência e menor uso de recursos em comparação com máquinas virtuais.
A alternativa E afirma que o item está errado, mas isso não procede. O erro estaria se a afirmação dissesse que o contêiner encapsula o sistema operacional completo (com kernel próprio), o que não é o caso. Como o contêiner compartilha o kernel do host, é perfeitamente possível executar contêineres com diferentes sistemas operacionais (distribuições Linux) no mesmo servidor Docker. Portanto, a alternativa E está incorreta.
Gabarito: letra C (CERTO).
Link permanente: /questoes/ce398139