Construindo imagens personalizadas no Docker: tutorial para iniciantes

Por Gaspar Barancelli Junior em 04 de abril de 2024

O Docker é uma plataforma de contêineres de software que permite criar, implantar e executar aplicativos em contêineres leves e portáteis. Os contêineres são uma forma de virtualização em que o sistema operacional é dividido em várias instâncias isoladas, cada uma das quais pode executar seu próprio aplicativo. Com o Docker, é possível empacotar um aplicativo em um contêiner, juntamente com todas as suas dependências, e executá-lo em qualquer lugar. Isso torna o desenvolvimento, implantação e gerenciamento de aplicativos muito mais fácil e eficiente. Neste post, vamos dar uma olhada nos passos necessários para criar uma imagem personalizada no Docker.

Passo 1: Crie um diretório para o Dockerfile

O primeiro passo para criar uma imagem personalizada no Docker é criar um diretório para o Dockerfile. O Dockerfile é o arquivo que descreve as instruções para construir a imagem.

Para criar o diretório, abra um terminal e execute o seguinte comando:

mkdir meu_dockerfile

Passo 2: Crie o Dockerfile

Agora que você tem um diretório para o Dockerfile, é hora de criá-lo. Abra um editor de texto e crie um novo arquivo chamado Dockerfile dentro do diretório que você acabou de criar.

vim meu_dockerfile/Dockerfile

O Dockerfile é um arquivo de texto que contém uma série de instruções para construir a imagem. Cada instrução é uma linha que começa com uma palavra-chave, seguida de um ou mais argumentos.

Passo 3: Escolha uma imagem base

O primeiro passo para criar uma imagem personalizada é escolher uma imagem base. A imagem base é a imagem do Docker que você usará como ponto de partida para a sua imagem personalizada.

Você pode escolher uma imagem base de qualquer repositório público ou privado do Docker Hub. O Docker Hub é um registro público de imagens do Docker que você pode usar como base para suas próprias imagens personalizadas.

Aqui está um exemplo de como escolher a imagem base do Ubuntu:

FROM ubuntu:latest

A palavra-chave FROM indica qual é a imagem base. No exemplo acima, a imagem base é a imagem mais recente do Ubuntu.

Passo 4: Instale os pacotes necessários

Depois de escolher a imagem base, você pode instalar qualquer pacote ou biblioteca que precisar para sua aplicação. Você pode usar comandos RUN para executar essas instalações.

Por exemplo, se você estiver criando uma imagem para executar um servidor web Apache, poderá instalar o Apache com o seguinte comando:

RUN apt-get update && apt-get install -y apache2

O comando apt-get update atualiza o cache do pacote e o comando apt-get install instala o pacote Apache.

Passo 5: Exponha as portas necessárias

Se sua aplicação precisar de acesso à rede, você deve expor as portas necessárias usando a palavra-chave EXPOSE. O comando EXPOSE informa ao Docker quais portas devem estar acessíveis quando o contêiner estiver em execução.

Por exemplo, se você estiver criando uma imagem para executar um servidor web Apache na porta 80, poderá expor a porta 80 com o seguinte comando:

EXPOSE 80

Passo 6: Defina o comando padrão

Por fim, você deve definir o comando padrão que será executado quando o contêiner for iniciado. Você pode fazer isso usando a palavra-chave CMD.

Por exemplo, se você estiver criando uma imagem para executar um servidor web Apache, poderá definir o comando padrão como:

CMD ["apache2ctl", "-D", "FOREGROUND"]

O comando acima inicia o Apache quando o contêiner é iniciado e mantém o processo em execução em primeiro plano.

Passo 7: Construa a imagem

Agora que você tem o Dockerfile, é hora de usar o comando docker build para construir a imagem. Certifique-se de estar no diretório onde o Dockerfile está localizado e que tenha o seguinte conteúdo.

FROM ubuntu:latest
RUN apt-get update && apt-get install -y apache2
EXPOSE 80
CMD ["apache2ctl", "-D", "FOREGROUND"]

Execute o seguinte comando no terminal:

docker build -t minha_imagem .

O comando docker build é usado para construir a imagem com base no Dockerfile no diretório atual. O argumento -t é usado para definir o nome e a tag da imagem. O ponto no final do comando indica que o Dockerfile está no diretório atual.

Você também pode adicionar um grupo e versão para a imagem:

docker build -t nome_do_grupo/minha_imagem:numero-da-versao .

Passo 8: Verifique a imagem

Depois de concluir a construção da imagem, você pode usar o comando docker images para ver a lista de imagens disponíveis no seu sistema.

docker images

A saída deve incluir a imagem que você acabou de criar.

Passo 9: Execute a imagem

Depois de construir e executar a imagem, você pode testá-la para garantir que está funcionando corretamente. Para testar uma imagem do Docker, você pode usar um navegador da web ou um utilitário de linha de comando como o curl.

Por exemplo, se você estiver executando um servidor web Apache na porta 80, poderá abrir um navegador da web e visitar http://localhost:80 para ver se a página inicial do Apache é exibida. Se você estiver usando o curl, poderá executar o seguinte comando:

curl http://localhost:80

Se tudo estiver funcionando corretamente, você deve ver a saída do Apache.

Passo 10: Faça o upload da imagem personalizada para o Docker Hub

Se você quiser compartilhar sua imagem personalizada com outras pessoas, pode fazer o upload dela para o Docker Hub.

Para fazer o upload da imagem, você precisa criar uma conta no Docker Hub e fazer login com o comando docker login. Depois disso, você pode enviar a imagem usando o comando docker push.

Por exemplo, se você quiser enviar a imagem minha_imagem para o Docker Hub, poderá executar o seguinte comando:

docker push minha_conta/minha_imagem

O comando acima envia a imagem para o registro público do Docker Hub sob sua conta.

Conclusão

Criar imagens personalizadas no Docker pode ser uma ótima maneira de automatizar a criação de ambientes de desenvolvimento e produção. Com um Dockerfile e alguns comandos do Docker, você pode criar uma imagem personalizada para executar qualquer aplicativo que precisar.

Espero que este tutorial tenha sido útil e que você possa usá-lo para criar suas próprias imagens personalizadas do Docker.

// Compartilhe esse Post