Pular para o conteúdo principal

Questão de Engenharia de Software — Ferramentas de Desenvolvimento de Software — INSTITUTO AOCP 2025

Engenharia de SoftwareFerramentas de Desenvolvimento de Software
Código
qg539073
Banca
INSTITUTO AOCP
Órgão
IF-MS
Ano
2025
Nível
Superior
Cargo
Analista de Tecnologia da Informação
A equipe de desenvolvimento do IFMS precisa implantar uma aplicação web em diferentes ambientes, como desenvolvimento, teste e produção. Durante esse processo, a equipe enfrenta dificuldades com diferenças na configuração de cada ambiente, o que causa erros e comportamentos inesperados na aplicação. Diante desse cenário, assinale a alternativa que melhor descreve a principal vantagem do uso do Docker.
  1. AO Docker permite criar máquinas virtuais completas, com sistemas operacionais independentes, garantindo isolamento total e uso dedicado de recursos de hardware.
  2. BO Docker utiliza virtualização pesada para executar múltiplas aplicações em paralelo, garantindo que cada uma funcione em seu próprio sistema operacional.
  3. CO Docker empacota a aplicação e suas dependências em containers leves, garantindo execução isolada e consistente em diferentes ambientes.
  4. DO Docker atua como um sistema de versionamento de código, controlando as alterações feitas na aplicação e facilitando o rollback de versões problemáticas.
  5. EO Docker é uma ferramenta focada em monitoramento de desempenho, permitindo analisar métricas detalhadas de uso de CPU e memória durante a execução da aplicação.
Revelar gabarito e comentário

GabaritoC — O Docker empacota a aplicação e suas dependências em containers leves, garantindo execução isolada e consistente em diferentes ambientes.

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: containers e consistência entre ambientes

Gabarito: letra C. O Docker empacota a aplicação e suas dependências em containers leves, garantindo execução isolada e consistente em diferentes ambientes — é exatamente essa a vantagem que resolve o problema descrito no enunciado (diferenças de configuração entre desenvolvimento, teste e produção). As demais alternativas confundem Docker com máquinas virtuais, virtualização pesada, versionamento de código ou monitoramento de desempenho.

O Docker é uma plataforma de virtualização a nível de sistema operacional (também chamada de containerização). Em vez de virtualizar o hardware e rodar um sistema operacional completo para cada aplicação — como fazem as máquinas virtuais —, o Docker compartilha o kernel do host e isola a aplicação em um container, que é um processo com seu próprio sistema de arquivos, bibliotecas, variáveis de ambiente e configurações. Essa é a chave para entender a questão: o container empacota a aplicação e tudo o que ela precisa para rodar (dependências, runtime, bibliotecas), de modo que ela se comporta da mesma forma em qualquer ambiente que tenha o Docker instalado.

O problema descrito no enunciado — diferenças de configuração entre ambientes causando erros e comportamentos inesperados — é o problema clássico do "funciona na minha máquina". O Docker resolve isso porque a imagem do container é imutável e portátil: a mesma imagem que roda no ambiente de desenvolvimento é a mesma que roda em teste e em produção. Não há mais "configuração específica de cada ambiente" para gerenciar manualmente; a configuração está embutida na imagem. Isso garante consistência e reprodutibilidade.

A diferença fundamental entre containers e máquinas virtuais está na camada de virtualização:

Critério

Containers (Docker)

Máquinas Virtuais (VMs)

Virtualização

Nível de sistema operacional (compartilha o kernel do host)

Nível de hardware (cada VM tem seu próprio SO)

Peso

Leves, iniciam em segundos

Pesadas, iniciam em minutos

Isolamento

Isolamento de processos e sistema de arquivos

Isolamento completo, com SO independente

Uso de recursos

Compartilha recursos do host, mais eficiente

Consome recursos dedicados para cada VM

Portabilidade

Imagem única que roda em qualquer host com Docker

Depende do hypervisor e da configuração da VM

A pegadinha da banca é justamente confundir essas duas tecnologias. O candidato que não domina a diferença entre container e VM tende a marcar a alternativa A ou B, que descrevem máquinas virtuais, não containers. O Docker não cria máquinas virtuais completas, não usa virtualização pesada e não garante isolamento total com SO independente — ele é mais leve e mais eficiente justamente por compartilhar o kernel.

Guarde a fronteira: container = empacota a aplicação e dependências, leve e consistente; VM = virtualiza o hardware, pesada e com SO próprio. É exatamente nessa fronteira que as alternativas se dividem.

Docker
  • 1Container (virtualização leve)
    • Compartilha kernel do host
    • Empacota app + dependências
    • Consistência entre ambientes
  • 2Máquina virtual (distrator)
    • SO independente
    • Virtualização pesada
    • Recursos dedicados
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Descreve máquinas virtuais, não containers. O Docker não cria "máquinas virtuais completas, com sistemas operacionais independentes" — ele compartilha o kernel do host e isola a aplicação em um container. A alternativa também erra ao afirmar "uso dedicado de recursos de hardware": os containers compartilham os recursos do host de forma dinâmica, não dedicada.

Alternativa B — ❌ Incorreta

Repete o erro da alternativa A com outras palavras: "virtualização pesada" e "cada uma funcione em seu próprio sistema operacional" são características de máquinas virtuais, não de containers. O Docker usa virtualização leve (a nível de SO), e os containers compartilham o kernel do host — não têm SO próprio.

Alternativa C — ✅ Correta ⟵ GABARITO

Esta é a definição correta de Docker. Ele empacota a aplicação e suas dependências em containers leves, garantindo execução isolada e consistente em diferentes ambientes. É exatamente isso que resolve o problema do enunciado: a mesma imagem roda igual em desenvolvimento, teste e produção, eliminando as diferenças de configuração.

Alternativa D — ❌ Incorreta

Confunde Docker com um sistema de versionamento de código (como Git). O Docker não controla alterações no código-fonte nem facilita rollback de versões da aplicação — ele gerencia a execução de containers a partir de imagens. Versionamento de código é função de ferramentas como Git, GitHub, GitLab, etc.

Alternativa E — ❌ Incorreta

Confunde Docker com uma ferramenta de monitoramento de desempenho. O Docker não é focado em analisar métricas de CPU e memória — embora forneça comandos básicos como docker stats, essa não é sua função principal. Ferramentas de monitoramento dedicadas são Prometheus, Grafana, Datadog, entre outras.

NÃO CAIA NESSA!

A banca adora trocar container por máquina virtual para confundir. As alternativas A e B descrevem perfeitamente VMs (SO independente, virtualização pesada, recursos dedicados), mas o Docker é o oposto: leve, compartilha o kernel, empacota a aplicação. Se a alternativa falar em "SO próprio" ou "virtualização pesada", é VM, não Docker. Com treino, você enxerga essa troca de longe 💪

PEGA ESSA DICA!

Na prova, quando a questão falar de Docker, procure a palavra-chave "container" e o conceito de "empacotar a aplicação e dependências". Se a alternativa mencionar "máquina virtual", "SO independente" ou "virtualização pesada", descarte na hora — é o distrator clássico.

Gabarito: letra C

Link permanente: /questoes/qg539073