Como executar um contêiner Docker baseado numa imagem personalizada

DockerBeginner
Pratique Agora

Introdução

Docker é uma plataforma popular de contentores que permite aos desenvolvedores empacotar e implantar aplicações num ambiente consistente e isolado. Neste tutorial, aprenderá a construir uma imagem Docker personalizada e a executar um contêiner Docker baseado nessa imagem. No final deste guia, terá uma compreensão sólida do processo para criar, gerir e executar contentores Docker para as suas aplicações.

Compreendendo Contêineres Docker

Docker é uma plataforma de código aberto popular que permite aos desenvolvedores construir, implantar e executar aplicações num ambiente de contentores. Os contentores são pacotes de software leves, autónomos e executáveis que incluem tudo o que é necessário para executar uma aplicação, incluindo o código, o tempo de execução, as ferramentas de sistema e as bibliotecas.

O que é um Contêiner Docker?

Um contêiner Docker é uma unidade de software padronizada que empacota o código e todas as suas dependências para que a aplicação execute de forma rápida e fiável de um ambiente informático para outro. Os contentores são criados a partir de imagens Docker, que são os projetos para criar contentores.

graph LR
  A[Imagem Docker] --> B[Contêiner Docker]
  B[Contêiner Docker] --> C[Aplicação em execução]

Benefícios dos Contêineres Docker

Os contentores Docker oferecem várias vantagens em relação às abordagens tradicionais de virtualização:

Benefício Descrição
Portabilidade Os contentores podem executar-se de forma consistente em qualquer máquina, independentemente da infraestrutura subjacente.
Eficiência Os contentores partilham o sistema operativo do host, tornando-os mais leves e eficientes do que as máquinas virtuais.
Consistência Os contentores garantem que as aplicações sempre executarão da mesma forma, independentemente do ambiente.
Escalabilidade Os contentores podem ser facilmente escalados para cima ou para baixo para satisfazer as necessidades em mudança.

Ciclo de Vida de um Contêiner Docker

O ciclo de vida de um contêiner Docker inclui as seguintes fases:

  1. Construção: Criação de uma imagem Docker a partir de um Dockerfile.
  2. Envio: Armazenamento da imagem Docker num registo, como o Docker Hub.
  3. Execução: Lançamento de um novo contêiner a partir de uma imagem Docker.
  4. Gestão: Monitorização, escalamento e manutenção de contentores em execução.

Compreendendo os fundamentos dos contentores Docker, pode agora prosseguir para a construção de uma imagem Docker personalizada.

Construindo uma Imagem Docker Personalizada

Para construir uma imagem Docker personalizada, precisa criar um Dockerfile, que é um ficheiro de texto que contém instruções para a construção da imagem.

Criando um Dockerfile

Eis um exemplo de Dockerfile que constrói uma imagem personalizada baseada na imagem base Ubuntu 22.04 e instala o servidor web Apache:

## Utilize a imagem base Ubuntu 22.04
FROM ubuntu:22.04

## Atualize o índice de pacotes e instale o Apache
RUN apt-get update && apt-get install -y apache2

## Defina o comando padrão a executar quando o contêiner é iniciado
CMD ["apache2ctl", "-D", "FOREGROUND"]

Construindo a Imagem Docker

Para construir a imagem Docker a partir do Dockerfile, execute o seguinte comando no mesmo diretório do Dockerfile:

docker build -t my-apache-image .

Este comando criará uma nova imagem Docker chamada my-apache-image com base nas instruções no Dockerfile.

Inspecionando a Imagem Docker

Após a construção da imagem, pode listar todas as imagens no seu sistema usando o seguinte comando:

docker images

Isto mostrará a lista de imagens Docker, incluindo a my-apache-image que acabou de criar.

Também pode inspecionar os detalhes da imagem usando o seguinte comando:

docker inspect my-apache-image

Isto mostrará os metadados e a configuração da imagem Docker.

Agora que tem uma imagem Docker personalizada, pode prosseguir para a execução de um contêiner baseado nesta imagem.

Executando um Contêiner Docker a Partir de uma Imagem Personalizada

Agora que tem uma imagem Docker personalizada, pode executar um contêiner baseado nessa imagem.

Iniciar um Contêiner Docker

Para iniciar um novo contêiner a partir da imagem my-apache-image, utilize o seguinte comando:

docker run -d -p 80:80 --name my-apache-container my-apache-image

Aqui está o que cada parte do comando faz:

  • docker run: Inicia um novo contêiner Docker.
  • -d: Executa o contêiner em modo desacoplado, o que significa que ele roda em segundo plano.
  • -p 80:80: Mapeia a porta 80 no host para a porta 80 no contêiner, permitindo aceder ao servidor web a partir do host.
  • --name my-apache-container: Atribui o nome "my-apache-container" ao contêiner em execução.
  • my-apache-image: O nome da imagem Docker a utilizar para o contêiner.

Verificando o Contêiner em Execução

Após iniciar o contêiner, pode verificar se ele está a funcionar utilizando os seguintes comandos:

## Listar todos os contêineres em execução
docker ps

## Inspecionar o contêiner
docker inspect my-apache-container

O comando docker ps mostrará a lista de contêineres em execução, incluindo o my-apache-container que acabou de iniciar.

O comando docker inspect fornecerá informações detalhadas sobre o contêiner em execução, incluindo o seu endereço IP, mapeamentos de portas e outros detalhes de configuração.

Acedendo ao Servidor Web

Uma vez que o contêiner esteja a funcionar, pode aceder ao servidor web Apache abrindo um navegador web e acedendo a http://localhost. Deverá ver a página de boas-vindas padrão do Apache.

Compreendendo como executar um contêiner Docker baseado numa imagem personalizada, pode agora implantar as suas próprias aplicações num ambiente de contentores.

Resumo

Neste tutorial, aprendeu a construir uma imagem Docker personalizada e a executar um contêiner Docker baseado nessa imagem. Explorou os passos para criar uma imagem Docker, incluindo a escrita de um Dockerfile e a construção da imagem. Adicionalmente, aprendeu a executar um contêiner Docker utilizando a imagem personalizada, a gerir o ciclo de vida do contêiner e a aceder ao contêiner em execução. Com estas competências, pode agora empacotar e implantar as suas aplicações com confiança utilizando contêineres Docker.