Dockerfile: principais comandos e instruções

soutoigor

Igor Souto

Posted on June 24, 2020

Dockerfile: principais comandos e instruções

O Dockerfile é o meio que utilizamos para construir uma imagem.

Ele funciona como uma receita, em que vamos passando uma imagem base, comandos e todo o passo a passo.

Ao construir este Dockerfile, criamos nossa imagem, e a partir desta imagem, criamos nosso container.

Comandos mais úteis no Dockerfile

FROM

FROM debian
Enter fullscreen mode Exit fullscreen mode

Deve ser o primeiro comando de um Dockerfile, com ele configuramos qual a imagem que queremos utilizar como base na nossa imagem.

ADD

ADD opa.txt /diretorio/
Enter fullscreen mode Exit fullscreen mode

Para mover um arquivo para dentro de um diretório do container, podendo ser arquivos .tar .

CMD

CMD ["sh, "-c", "echo", "$HOME"]
Enter fullscreen mode Exit fullscreen mode

Define um comando para ser executado quando um container com esta imagem inicializar.

Pode haver apenas uma instrução CMD em um Dockerfile. Se você adicionar mais de um, apenas o último entrará em vigor.

Ele pode ser sobrescrito se passarmos outro comando na linha de comando, como:

docker run -d minha-imagem /bin/bash
Enter fullscreen mode Exit fullscreen mode

LABEL

LABEL Description="Bla bla bla giropops"
Enter fullscreen mode Exit fullscreen mode

Para adicionar uma descrição ao container e ficar mais fácil de gerenciar os containers.

COPY

COPY opa.txt /diretorio/
Enter fullscreen mode Exit fullscreen mode

Semelhante ao ADD, porém vc pode copiar arquivos normais e diretórios.

ENTRYPOINT

ENTRYPOINT ["npm", "run", "dev"]
Enter fullscreen mode Exit fullscreen mode

É bem parecido com o CMD, mas este não pode ser sobrescrito, ele sempre será executado e o container irá rodar como um executável.

Quando este comando "morrer", o container morrerá também.

ENV

ENV API_KEY="Igor Souto"
Enter fullscreen mode Exit fullscreen mode

Para configurar variáveis de ambiente para o container.

EXPOSE

EXPOSE 80
Enter fullscreen mode Exit fullscreen mode

Configura portas que o container irá expor, e então o container será acessível por essas portas.

RUN

RUN apt-get update && apt-get install apache2 && apt-get clean
Enter fullscreen mode Exit fullscreen mode

Usado para executar comandos no contêiner, geralmente usado para instalar pacotes.
Cada RUN cria uma nova camada em nosso contêiner, portanto, precisamos evitar criar RUNs demais, criar menos camadas e não deixar tudo muito confuso, afinal, só temos acesso read-write na última camada, dependendo sobre o que queremos fazer, não podemos (por exemplo, apt-get clean rodando em outro RUN).
Para entender melhor como funcionam as camadas da imagem, acesse aqui o post sobre Docker.

USER

USER igor
Enter fullscreen mode Exit fullscreen mode

Para definirmos qual será o usuário dentro do container, por padrão ele é o usuário ROOT.

WORKDIR

WORKDIR /catota
Enter fullscreen mode Exit fullscreen mode

Para definirmos qual o diretório de trabalho. Assim que o container for executado, este diretório será o que iremos cair dentro ao acessar o container.

VOLUME

VOLUME /diretorio
Enter fullscreen mode Exit fullscreen mode

Passamos o caminho em que o Docker irá criar um volume, ou seja, um diretório que terá uma cópia em nossa máquina local e que se alterarmos algo neste diretório, será alterado dentro do container também e vice-versa.

MAINTAINER

MAINTAINER Igor igor@email.com
Enter fullscreen mode Exit fullscreen mode

Passamos quem é o dono do container.

Build container

docker build -t primeira_imagem:1.0 .
Enter fullscreen mode Exit fullscreen mode

Agora para buildar a imagem, usamos o comando build do Docker. passamos o parametro -tpara nomear esta imagem, dois pontos e uma versão. E utilizamos o " . ", para dizer que nosso Dockerfile se encontra neste mesmo nível de diretório. Não apontamos o Dockerfile, e sim o diretório que ele se encontra.

💖 💪 🙅 🚩
soutoigor
Igor Souto

Posted on June 24, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related