DEV Community

Yuri Peixinho
Yuri Peixinho

Posted on

Como criar Imagens? (Dockerfile)

Como já sabemos, imagens prontas podem ser encontradas em repositórios e podem ser baixadas e usadas conforme a nossa necessidade. O Docker Hub é um exemplo disso.

Acontece que nem sempre a imagem que queremos usar está pronta do jeito que queremos, e, muitas vezes teremos que ter uma imagem customizada a partir da imagem que já existe. Para isso, temos que construir nossas próprias imagens.

O Docker é capaz de construir imagens automaticamente lendo as intruções a partir de um arquivo texto chamado Dockerfile.

O dockerfile é um arquivo texto com instruções, comandos e passos que é executado através do comando build para gerar uma imagem.

Image description

Image description

Podemos pensar no Dockerfile como um arquivo de lote que contém instruções com uma sintaxe definida (INSTRUÇÃO argumento) que devemos seguir para que uma imagem seja criada.

Exemplo

Vamos criar uma imagem a partir do debian 8 que instale e inicie o servidor nginx

  1. Definir uma imagem base
  2. Definir informações para a imagem
  3. Executar comandos para instalar e iniciar o nginx
  4. Expor qual porta o servidor vai atender (no contêiner)
  5. Definir o ponto de entrada da aplicação
  6. Definir a execução de um comando para inicializar o servidor nginx

Criar Dockerfile

FROM debian:8
LABEL version="1.0" description="Debin/Nginx"
RUN apt-get update && apt-get install -y nginx && apt-get clean
EXPOSE 80
ENTRYPOINT [ "/usr/sbin/nginx" ]
CMD ["-g" "daemon off;"]
Enter fullscreen mode Exit fullscreen mode

Buildar Dockerfile

docker build -t yuripeixinho/img:1.0 .
Enter fullscreen mode Exit fullscreen mode
  • docker build: o comando que constrói a imagem
  • -t: usado para informar que a imagem pertence ao meu usuário
  • yuripeixinho/img:1.0: nome da imagem e a tag atribuída à imagem
  • .: significa diretório atual

Criar e rodar container

Agora é necessário executar o comando para criar o container da imagem criada

 docker run -d -p 8080:80 --name=ws1 yuripeixinho/img:1.0
Enter fullscreen mode Exit fullscreen mode
  • docker run: comando para criar e rodar um novo contêiner.
  • d (detached mode): O contêiner será executado em segundo plano (background), sem bloquear o terminal.
  • p 8080:80 (port binding)

    Mapeia a porta 8080 do host para a porta 80 do contêiner. Isso significa que se um serviço (como o Nginx) estiver rodando no contêiner na porta 80, ele poderá ser acessado no host através da porta 8080 (http://localhost:8080).

  • -name=ws1: Define um nome para o contêiner (ws1), facilitando a sua identificação e manipulação sem precisar usar o ID gerado automaticamente.

  • yuripeixinho/img:1.0: Nome e tag da imagem a ser usada para criar o contêiner. A imagem yuripeixinho/img (versão 1.0) será baixada do repositório local ou do Docker Hub, caso não exista localmente.

Top comments (0)