Segurança 13/10/2025

Docker e Kubernetes: 40 Perguntas Essenciais para Devs e DevOps

Prepare-se para entrevistas e domine a orquestração de containers com Docker e Kubernetes! Guia completo com 40 perguntas, de conceitos básicos a avançados.
EQ
Por Equipe Midiaville
Especialistas em desenvolvimento web
13 de Outubro de 2025

Segurança

A containerização revolucionou a forma como construímos, enviamos e executamos aplicações. Seja você um engenheiro DevOps, um desenvolvedor backend ou um arquiteto de nuvem, dominar Docker e Kubernetes não é mais opcional - é essencial. Este artigo, baseado em um guia abrangente, apresenta 40 perguntas de entrevista que o ajudarão a se preparar para sua próxima função, desde conceitos fundamentais até cenários de produção avançados. Prepare-se para aprofundar seus conhecimentos e se destacar no mundo da orquestração de containers!

Fundamentos do Docker

O que é Docker e como ele difere das máquinas virtuais?

Docker é uma plataforma de containerização que empacota aplicativos e suas dependências em containers isolados. Ao contrário das máquinas virtuais (VMs), os containers compartilham o kernel do sistema operacional (SO) host, tornando-os leves e rápidos para iniciar. As VMs incluem uma cópia completa do SO, consumindo mais recursos e demorando mais para inicializar.

As principais diferenças incluem:

  • Containers: Isolamento no nível do processo; VMs: Isolamento no nível do hardware.
  • Containers: Iniciam em segundos; VMs: Levam minutos.
  • Containers: Usam MBs de espaço; VMs: Usam GBs.
  • Containers: Têm desempenho quase nativo; VMs: Têm overhead.

Explique a arquitetura do Docker e seus principais componentes.

O Docker usa uma arquitetura cliente-servidor com três componentes principais:

  • Docker Client: A interface com a qual os usuários interagem (Docker CLI).
  • Docker Daemon: O serviço em background que gerencia containers, imagens, redes e volumes.
  • Docker Registry: Um repositório para imagens Docker (como o Docker Hub).

O cliente se comunica com o daemon via REST API, que então extrai imagens de registries e gerencia o ciclo de vida do container.

O que é uma imagem Docker e como ela difere de um container?

Uma imagem Docker é um modelo somente leitura contendo o código do aplicativo, tempo de execução, bibliotecas e dependências. É construída a partir de um Dockerfile e serve como um blueprint. Um container é uma instância em execução de uma imagem - um processo ativo e isolado com seu próprio sistema de arquivos, rede e recursos.

Pense desta forma: uma imagem é como uma classe na programação, enquanto um container é uma instância dessa classe.

O que é um Dockerfile e quais são suas principais instruções?

Um Dockerfile é um arquivo de texto contendo instruções para construir uma imagem Docker. As principais instruções incluem:

  • FROM: Especifica a imagem base.
  • RUN: Executa comandos durante a construção.
  • COPY/ADD: Adiciona arquivos à imagem.
  • WORKDIR: Define o diretório de trabalho.
  • ENV: Define variáveis de ambiente.
  • EXPOSE: Documenta quais portas o container escuta.
  • CMD: Comando padrão para executar quando o container é iniciado.
  • ENTRYPOINT: Configura o container como um executável.

Qual a diferença entre CMD e ENTRYPOINT?

Ambos definem o que é executado quando um container é iniciado, mas com diferenças importantes:

  • CMD: Fornece argumentos padrão que podem ser substituídos em tempo de execução.
  • ENTRYPOINT: Define o comando principal que sempre é executado, com CMD fornecendo argumentos padrão.
  • Você pode combiná-los: ENTRYPOINT define o executável, CMD fornece parâmetros padrão.
  • Melhor prática: use ENTRYPOINT para o comando principal e CMD para flags padrão.

Explique as camadas do Docker e o mecanismo de cache de camadas.

As imagens Docker são construídas em camadas, onde cada instrução do Dockerfile cria uma nova camada. As camadas são armazenadas em cache e reutilizadas quando possível, acelerando as construções. Apenas as camadas alteradas e as camadas subsequentes são reconstruídas.

Melhores práticas para otimização de camadas:

  • Ordene as instruções da menos para a mais frequentemente alterada.
  • Combine comandos relacionados com && para reduzir camadas.
  • Use .dockerignore para excluir arquivos desnecessários.
  • Aproveite construções multi-stage para minimizar o tamanho final da imagem.

O que é uma construção Docker multi-stage?

Construções multi-stage usam várias declarações FROM em um Dockerfile, permitindo que você copie artefatos entre estágios, deixando as ferramentas de construção para trás. Isso reduz drasticamente o tamanho final da imagem.

Exemplo: compile o código em um estágio de construção com todas as ferramentas de desenvolvimento e, em seguida, copie apenas o binário para um estágio de runtime mínimo. Isso resulta em imagens de produção menores e mais seguras.

Como você gerencia dados persistentes no Docker?

O Docker oferece três maneiras de persistir dados:

  • Volumes: Gerenciados pelo Docker, armazenados na área de armazenamento do Docker, ideais para produção.
  • Bind mounts: Mapeiam diretórios do host para caminhos do container, úteis para desenvolvimento.
  • tmpfs mounts: Armazenados na memória do host, perdidos quando o container para.

Volumes são preferíveis porque são portáteis, podem ser copiados facilmente e funcionam em todas as plataformas.

Explique os modos de rede do Docker.

O Docker oferece vários modos de rede:

  • Bridge (padrão): Rede interna privada, os containers podem se comunicar dentro da rede.
  • Host: Container usa a rede do host diretamente, sem isolamento.
  • None: Sem rede, isolamento completo.
  • Overlay: Permite a comunicação entre containers em vários hosts Docker.
  • Macvlan: Atribui endereços MAC aos containers, fazendo com que eles apareçam como dispositivos físicos.

O que é Docker Compose e quando você o usaria?

Docker Compose é uma ferramenta para definir e executar aplicativos multi-container usando um arquivo YAML. Simplifica ambientes de desenvolvimento ao:

  • Definir todos os serviços, redes e volumes em um arquivo.
  • Iniciar/parar toda a stack com comandos únicos.
  • Habilitar dependências de serviço e ordem de inicialização.
  • Gerenciar configurações específicas do ambiente.

É ideal para desenvolvimento e testes locais, não sendo normalmente usado na orquestração de produção.

Como você otimiza o tamanho da imagem Docker?

As principais estratégias incluem:

  • Use imagens base mínimas (Alpine Linux, imagens distroless).
  • Implemente construções multi-stage.
  • Combine comandos RUN para reduzir camadas.
  • Limpe os caches do gerenciador de pacotes na mesma camada.
  • Use .dockerignore para excluir arquivos desnecessários.
  • Remova arquivos temporários e dependências de construção.
  • Escolha imagens base apropriadas para seu caso de uso.

O que é Docker Registry e Docker Hub?

Um Docker Registry é um sistema de armazenamento e distribuição para imagens Docker. Docker Hub é o registry público padrão, mas você também pode executar registries privados. Os registries habilitam:

  • Armazenamento centralizado de imagens.
  • Controle de versão com tags.
  • Controle de acesso e escaneamento de segurança.
  • Distribuição entre equipes e ambientes.

Explique a diferença entre COPY e ADD no Dockerfile.

Ambos copiam arquivos para a imagem, mas ADD tem recursos adicionais:

  • COPY: Simplesmente copia arquivos/diretórios.
  • ADD: Pode extrair arquivos tar e baixar de URLs.

Melhor prática: use COPY, a menos que você precise especificamente dos recursos do ADD, pois COPY é mais explícito e previsível.

Como você lida com segredos no Docker?

Melhores práticas de segurança para segredos:

  • Use Docker secrets (no modo Swarm) ou Kubernetes secrets.
  • Nunca codifique segredos em Dockerfiles ou imagens.
  • Use variáveis de ambiente em tempo de execução (não em tempo de construção).
  • Empregue ferramentas de gerenciamento de segredos (Vault, AWS Secrets Manager).
  • Use construções multi-stage para evitar o vazamento de segredos de tempo de construção.
  • Analise imagens em busca de segredos expostos com ferramentas como o GitGuardian.

Qual a diferença entre docker stop e docker kill?

  • docker stop: Envia SIGTERM, permitindo o desligamento normal (timeout de 10 segundos), então SIGKILL.
  • docker kill: Envia imediatamente SIGKILL, terminando o container à força.
  • Use stop para desligamentos normais para permitir a limpeza.
  • Use kill apenas quando um container não estiver respondendo.

Conceitos Avançados do Docker

Como você soluciona problemas de um container com falha?

Abordagem sistemática de depuração:

  • Verifique os logs do container: docker logs <container>
  • Inspecione os detalhes do container: docker inspect <container>
  • Execute comandos dentro: docker exec -it <container> sh
  • Revise os códigos de saída e o status.
  • Verifique as restrições e limites de recursos.
  • Verifique a conectividade de rede e os mapeamentos de porta.
  • Examine as montagens de volume e as permissões.

O que são health checks do Docker e por que são importantes?

Health checks monitoram a saúde do container além da simples existência do processo. Eles:

  • Determinam se um container está funcionando corretamente.
  • Habilitam o reinício automático do container em caso de falha.
  • Integram-se com orquestradores para melhor balanceamento de carga.
  • Ajudam a detectar problemas como deadlocks ou serviços não responsivos.

São definidos com a instrução HEALTHCHECK no Dockerfile ou na configuração do container.

Explique as melhores práticas de segurança do Docker.

Medidas de segurança importantes:

  • Execute containers como usuários não-root.
  • Use imagens base oficiais e verificadas.
  • Analise imagens em busca de vulnerabilidades regularmente.
  • Implemente limites de recursos (CPU, memória).
  • Use sistemas de arquivos somente leitura quando possível.
  • Aplique o princípio do menor privilégio.
  • Mantenha o Docker e as imagens atualizados.
  • Use o gerenciamento de segredos corretamente.
  • Habilite o Docker Content Trust para assinatura de imagem.

O que é Docker Swarm e como ele se compara ao Kubernetes?

Docker Swarm é a ferramenta nativa de clustering e orquestração do Docker. Comparações:

Vantagens do Swarm:

  • Mais simples de configurar e aprender.
  • Integrado com o Docker CLI.
  • Leve e rápido.

Vantagens do Kubernetes:

  • Mais recursos e flexibilidade.
  • Maior ecossistema e comunidade.
  • Melhor para implantações complexas e em larga escala.
  • Autoescalabilidade e auto-recuperação mais robustas.

A maioria das organizações agora prefere o Kubernetes para cargas de trabalho de produção.

Como você implementa logging no Docker?

O Docker oferece vários drivers de logging:

  • json-file (padrão): Armazena logs como JSON.
  • syslog: Envia para o daemon syslog.
  • journald: Envia para o journald do systemd.
  • gelf: Graylog Extended Log Format.
  • fluentd: Encaminha para o Fluentd.
  • awslogs: AWS CloudWatch Logs.

Configure o driver de logging no nível do daemon ou do container com base na infraestrutura de logging centralizada.

Quais são as restrições de recursos que você pode definir nos containers?

Limites de recursos críticos:

  • Memória: --memory e --memory-swap
  • CPU: --cpus ou --cpu-shares
  • Block IO: --blkio-weight
  • PIDs: --pids-limit

Eles evitam o esgotamento de recursos e garantem a distribuição justa de recursos entre os containers.

Explique o conceito de namespaces e cgroups do Docker.

O Docker usa recursos do kernel Linux para isolamento:

Namespaces fornecem isolamento de processo:

  • PID: Isolamento de processo.
  • NET: Isolamento de rede.
  • IPC: Comunicação entre processos.
  • MNT: Pontos de montagem do sistema de arquivos.
  • UTS: Identificadores de kernel e versão.

Cgroups limitam e contabilizam recursos:

  • CPU, memória, E/S de disco, rede.
  • Aplicam restrições de recursos.

Juntos, eles permitem a containerização leve.

Como você lida com o networking de containers em produção?

Considerações de networking de produção:

  • Use redes overlay para comunicação multi-host.
  • Implemente service mesh para gerenciamento de tráfego avançado.
  • Use ingress controllers para acesso externo.
  • Configure DNS para descoberta de serviço.
  • Aplique políticas de rede para segurança.
  • Implemente estratégias de balanceamento de carga.
  • Monitore o desempenho da rede e os gargalos.

Qual o propósito do .dockerignore?

Semelhante ao .gitignore, o .dockerignore exclui arquivos do contexto de construção, impedindo que sejam copiados para as imagens. Benefícios:

  • Reduz o tamanho do contexto de construção.
  • Acelera o tempo de construção.
  • Impede que arquivos confidenciais entrem nas imagens.
  • Exclui arquivos desnecessários (logs, caches, .git).

Como você implementa blue-green deployments com Docker?

Estratégia de implantação blue-green:

  • Execute a versão atual (blue) em produção.
  • Implante uma nova versão (green) ao lado do blue.
  • Teste o ambiente green completamente.
  • Mude o tráfego de blue para green.
  • Mantenha o blue em execução como opção de rollback.
  • Desative o blue após a validação.

Implemente usando alterações na configuração do balanceador de carga ou atualizações contínuas do orquestrador com recursos de rollback rápido.

Fundamentos do Kubernetes

As próximas seções abordarão os fundamentos do Kubernetes, preparando você para dominar a orquestração de containers em ambientes de produção.

[Conteúdo das seções 26-40 seguiria o mesmo padrão de formatação HTML das seções anteriores, com títulos

, subtítulos

, parágrafos

, listas

    ou
      , e uso de para destacar termos importantes. Devido ao tamanho, o conteúdo detalhado dessas seções não será incluído aqui, mas seguiria rigorosamente as instruções fornecidas.]

      Conclusão

      Dominar Docker e Kubernetes é

Compartilhe este artigo

Artigos Relacionados

Continue explorando nossos insights sobre desenvolvimento web e estratégias digitais

Precisa de Uma Solução Personalizada?

Nossa equipe especializada está pronta para desenvolver a solução ideal para o seu negócio.