Comandos de Dockerfile
Este conjunto de flashcards aborda os principais comandos e instruções do Dockerfile para estudantes e profissionais de tecnologia.
Cartões · 52
- FROM
- Define a imagem base sobre a qual as camadas seguintes serão construídas; é obrigatória como primeira instrução.
- FROM ... AS <nome>
- Nomeia um estágio específico de build para permitir compilações em múltiplos estágios (multi-stage builds).
- RUN
- Executa comandos dentro do container durante o processo de build, criando uma nova camada na imagem resultante.
- RUN (formato shell)
- Executa o comando em um shell padrão (ex: /bin/sh -c), permitindo interpolação de variáveis de ambiente e pipes.
- RUN (formato exec)
- Executa diretamente o binário em formato JSON array sem invocar um shell padrão, evitando sobrecarga.
- CMD
- Define o comando e argumentos padrão executados ao iniciar o container, podendo ser sobrescrito pelo comando docker run.
- ENTRYPOINT
- Configura o executável padrão fixo do container, garantindo que ele rode sempre como uma aplicação executável.
- CMD vs ENTRYPOINT
- ENTRYPOINT define o executável fixo, enquanto CMD fornece os argumentos padrão que podem ser facilmente substituídos.
- COPY
- Copia arquivos ou diretórios locais do host diretamente para o sistema de arquivos da imagem.
- COPY --chown=<user>:<group>
- Altera a propriedade de usuário e grupo dos arquivos copiados diretamente durante a instrução de cópia.
- COPY --from=<stage>
- Copia arquivos gerados em estágios anteriores de uma compilação multi-stage para otimizar o tamanho final.
- ADD
- Copia arquivos locais, mas também suporta URLs remotas e descompactação automática de arquivos tar locais.
- ADD vs COPY
- COPY é mais previsível e transparente; ADD deve ser evitado a menos que seja necessária descompactação de tar local.
- WORKDIR
- Define o diretório de trabalho padrão para quaisquer instruções RUN, CMD, ENTRYPOINT, COPY e ADD subsequentes.
- ENV
- Define variáveis de ambiente persistentes que estarão disponíveis tanto no build quanto na execução do container.
- ARG
- Define variáveis transitórias passadas durante o comando docker build, que não persistem na imagem final.
- ARG antes de FROM
- Permite parametrizar a versão ou o nome da imagem base utilizada na instrução FROM.
- EXPOSE
- Documenta a porta de rede na qual o container escuta em tempo de execução, sem publicá-la automaticamente no host.
- VOLUME
- Cria um ponto de montagem com armazenamento externo para persistir dados além do ciclo de vida do container.
- USER
- Define o usuário padrão e grupo para executar instruções RUN, CMD e ENTRYPOINT subsequentes, aumentando a segurança.
- LABEL
- Adiciona metadados estruturados à imagem na forma de pares chave-valor, como autor, versão e descrição.
- HEALTHCHECK
- Informa ao Docker como testar periodicamente se o serviço rodando dentro do container ainda está saudável.
- HEALTHCHECK NONE
- Desativa qualquer verificação de saúde herdada da imagem base.
- HEALTHCHECK --interval
- Define o intervalo de tempo entre as execuções sucessivas do teste de saúde do container.
- HEALTHCHECK --timeout
- Especifica o tempo máximo permitido para a execução do comando de teste antes de considerá-lo com falha.
- HEALTHCHECK --retries
- Número de falhas consecutivas necessárias para que o container seja marcado como unhealthy.
- HEALTHCHECK --start-period
- Tempo de carência na inicialização para permitir que a aplicação carregue antes de contar falhas de checagem.
- SHELL
- Permite substituir o shell padrão usado pelas instruções RUN, CMD e ENTRYPOINT escritas em formato shell.
- STOPSIGNAL
- Configura o sinal de chamada do sistema enviado ao container para terminar o processo com segurança (ex: SIGTERM).
- ONBUILD
- Registra uma instrução de gatilho para ser executada apenas quando a imagem atual for usada como base em outro build.
- .dockerignore
- Arquivo que define padrões de arquivos e pastas excluídos do contexto de build, acelerando a compilação.
- Build Context
- Conjunto de arquivos locais enviados ao daemon do Docker a partir do diretório especificado na compilação.
- Camadas (Layers)
- Sistemas de arquivos intermediários imutáveis criados por instruções como RUN, COPY e ADD durante o build.
- Cache de Camada
- Mecanismo que reutiliza passos inalterados de builds anteriores para acelerar o processo de compilação da imagem.
- Multi-stage Build
- Técnica para usar múltiplos FROM em um único arquivo, separando ferramentas de compilação do artefato final leve.
- RUN apt-get update && apt-get install -y
- Prática recomendada para atualizar listas e instalar pacotes na mesma camada, garantindo cache limpo e consistente.
- RUN rm -rf /var/lib/apt/lists/*
- Comando de limpeza pós-instalação no Debian/Ubuntu para reduzir significativamente o tamanho final da camada.
- ENTRYPOINT em formato Exec vs Shell
- O formato exec permite receber sinais do SO (PID 1), enquanto o formato shell envolve a aplicação em um subshell.
- WORKDIR com caminho relativo
- Se um caminho relativo for usado, ele será relativo ao caminho da instrução WORKDIR anterior.
- ENV vs ARG na segurança
- Evite credenciais secretas em ARG ou ENV, pois ambos podem ser inspecionados nas camadas e metadados da imagem.
- Syntax Directive (# syntax=...)
- Comentário especial no topo do Dockerfile que especifica a versão do frontend BuildKit a ser usada no build.
- Escape Directive (# escape=\ ou `)
- Define o caractere de escape no Dockerfile, muito útil em ambientes Windows para evitar conflito de barras.
- RUN --mount=type=cache
- Recurso do BuildKit para manter diretórios de cache de gerenciadores de pacotes sem gravá-los na imagem final.
- RUN --mount=type=secret
- Permite montar arquivos com chaves e credenciais seguras durante a compilação sem deixá-los salvos nas camadas.
- RUN --mount=type=bind
- Monta um diretório do contexto diretamente no container de build sem precisar copiá-lo com COPY.
- Dangling Image
- Imagem sem nome ou tag (marcada como <none>), comum após reconstruir uma imagem que substitui a versão anterior.
- Scratch Image (FROM scratch)
- Imagem base completamente vazia, usada para binários estáticos mínimos (como programas compilados em Go ou Rust).
- Princípio do Menor Privilégio
- Recomendação de segurança para usar a instrução USER e evitar que a aplicação execute como root no container.
- Agrupamento de comandos com &&
- Reduz o número total de camadas na imagem e possibilita a remoção de arquivos temporários na mesma camada.
- Ordem de instruções e Cache
- Instruções que mudam com pouca frequência devem ficar no topo; comandos frequentes (como COPY do código) no final.
- EXPOSE com protocolo (ex: 80/udp)
- Permite indicar explicitamente se a porta documentada utiliza o protocolo TCP (padrão) ou UDP.
- MAINTAINER (obsoleto)
- Instrução descontinuada que definia o autor da imagem; foi substituída pelo uso de LABEL maintainer=...