Conteinerização Question #019e3a4f
O que é um Dockerfile?
Um script bash usado para construir automaticamente uma imagem docker.
Um arquivo de configuração que define para qual registry de imagens um container deve ser enviado.
Um arquivo de texto que contém todos os comandos que um usuário poderia executar na linha de comando para montar uma imagem.
Uma camada de imagem criada por um container em execução armazenada no host.
Official Explanation / Community Explanations
Um Dockerfile é um arquivo de texto que contém todos os comandos que um usuário poderia executar na linha de comando para montar uma imagem. É a forma padrão de definir as etapas para construir uma imagem Docker automaticamente. Cada instrução em um Dockerfile cria uma camada na imagem, e o arquivo é processado pelo comando docker build para produzir uma imagem final.
Como funciona:
- O Dockerfile usa um conjunto de instruções específicas como
FROM,RUN,COPY,ADD,CMD,ENTRYPOINT,EXPOSE,ENV,WORKDIR, etc. - Cada instrução é executada em ordem, e o estado resultante do sistema de arquivos é registrado como uma nova camada.
- O comando
docker buildlê o Dockerfile de um contexto especificado (geralmente um diretório) e executa as instruções para produzir a imagem.
Por que a resposta correta está certa:
A descrição correta afirma que um Dockerfile é um arquivo de texto contendo todos os comandos que um usuário poderia executar na linha de comando para montar uma imagem. Isso é preciso porque as instruções do Dockerfile espelham operações de linha de comando (por exemplo, RUN apt-get update é semelhante a executar esse comando em um shell). O Dockerfile automatiza o processo de criação de uma imagem especificando cada etapa.
Por que as respostas incorretas estão erradas:
- Um script bash usado para construir automaticamente uma imagem docker: Embora um script bash possa ser usado para construir uma imagem (por exemplo, executando
docker commitapós cada etapa), um Dockerfile não é um script bash. É um arquivo de configuração declarativo com sua própria sintaxe e instruções, não um script de shell. - Um arquivo de configuração que define para qual registry de imagens um container deve ser enviado: Isso descreve uma configuração para enviar imagens (por exemplo,
~/.docker/config.jsonou configurações de registry), não um Dockerfile. Um Dockerfile define como construir uma imagem, não para onde enviá-la. - Uma camada de imagem criada por um container em execução armazenada no host: Isso descreve uma camada de container (a camada gravável criada quando um container é executado), não um Dockerfile. Um Dockerfile é usado para construir imagens, não é uma camada em si.