Um cientista de dados está desenvolvendo um modelo de Machine Learning e deseja garantir que sua aplicação rode de maneira reprodutível em diferentes máquinas, sem precisar configurar manualmente todas as dependências.Com essa finalidade, ele decide utilizar Docker para criar um ambiente isolado. Qual dos comandos, a seguir, é utilizado para construir uma imagem Docker, a partir de um Dockerfile, para que o cientista de dados possa compartilhar seu ambiente de desenvolvimento com outras pessoas?
- A)docker build -t my_image
Correta, porque o comando docker build cria uma imagem a partir de um Dockerfile e a flag -t define o nome/tag da imagem.
- B)docker pull my_image
Errada, porque docker pull apenas baixa uma imagem pronta de um repositório, sem construí-la a partir do Dockerfile.
- C)docker run my_image
Errada, porque docker run executa um container com base em uma imagem já existente, não cria a imagem.
- D)docker commit my_container my_image
Errada, porque docker commit gera uma nova imagem a partir de alterações feitas em um container em execução, e nao do Dockerfile.
- E)docker save my_image > my_image.tar
Errada, porque docker save apenas exporta uma imagem para um arquivo .tar, nao a constrói.
Gabarito: A
Quando voce quer levar um ambiente inteiro para outra maquina sem virar refem do "na minha maquina funciona", Docker ajuda a empacotar aplicação, dependências e configurações em uma imagem. A ideia central é criar uma imagem a partir de um Dockerfile, que funciona como a receita do ambiente: ele diz qual base usar, o que instalar e como montar tudo. Nesse contexto, o comando correto é o que faz o build da imagem. O comando "docker build -t my_image" constrói a imagem a partir do Dockerfile e ainda atribui a ela a tag my_image, facilitando o compartilhamento e o uso posterior. Em provas, pense assim: Dockerfile é a receita, build é a cozinha trabalhando, e imagem é o prato pronto. Os outros comandos têm funções diferentes: pull baixa uma imagem de um repositório, run executa um container a partir de uma imagem, commit transforma mudanças de um container em uma nova imagem, e save exporta a imagem para um arquivo .tar. Ou seja, todos são úteis, mas nenhum deles substitui o ato de construir a imagem a partir do Dockerfile. Em termos conceituais, a questão explora virtualização por contêineres, que se apoia no kernel do sistema operacional para isolar processos, sem precisar emular uma máquina inteira como ocorre em outras formas de virtualização. Por isso, para distribuir um ambiente reprodutível de desenvolvimento, a etapa inicial e decisiva é construir a imagem.