Como remover imagens Docker de um projeto de Docker Compose

O Docker Compose é uma ferramenta que permite definir e executar aplicativos Docker em vários contêineres. Ele usa um arquivo YAML para definir os serviços, redes e volumes necessários para o aplicativo. À medida que você adiciona ou atualiza os serviços em seu aplicativo, as imagens Docker são criadas e armazenadas em cache localmente.

No entanto, com o tempo, essas imagens podem ocupar muito espaço em seu sistema, e você pode querer remover algumas delas para economizar espaço em disco. Neste artigo, vamos mostrar como remover imagens Docker de um projeto Docker Compose e como automatizar esse processo usando scripts bash.

Passo 1: Parar os contêineres

Antes de remover as imagens, é necessário verificar se todos os contêineres associados à imagem que você deseja remover estão parados. Você pode verificar isso executando o comando docker-compose ps no diretório raiz do projeto Docker Compose. Se algum contêiner estiver em execução, você deve pará-lo antes de continuar.

$ cd myproject/
$ docker-compose ps
        Name                      Command               State              Ports
------------------------------------------------------------------------------------------
myproject_db_1        docker-entrypoint.sh mysqld      Up (healthy)      3306/tcp
myproject_web_1       /bin/sh -c nginx -g 'daemo ...   Up                0.0.0.0:80->80/tcp

Neste exemplo, podemos ver que os contêineres myproject_db_1 e myproject_web_1 estão em execução. Para parar os contêineres, podemos usar o comando docker-compose down.

$ docker-compose down
Stopping myproject_web_1 ... done
Stopping myproject_db_1 ... done
Removing myproject_web_1 ... done
Removing myproject_db_1 ... done

Passo 2: Remover as imagens

Para remover imagens Docker de um projeto Docker Compose, podemos usar o comando docker-compose down --rmi <tipo de imagem>. O <tipo de imagem> pode ser all, local, cache ou none. Aqui está o que cada um faz:

  • all – Remove todas as imagens do projeto.
  • local – Remove apenas as imagens que foram construídas localmente (usando o comando docker-compose build).
  • cache – Remove apenas as imagens em cache que foram baixadas anteriormente.
  • none – Não remove nenhuma imagem.

Por exemplo, se quisermos remover todas as imagens do projeto, podemos executar o seguinte comando:

$ docker-compose down --rmi all

Para remover imagens individuais, podemos usar o comando docker rmi <nome da imagem> para cada imagem que desejamos remover. Certifique-se de usar o nome correto da imagem, que geralmente é composto por um nome de repositório e uma tag. Você pode verificar os nomes das imagens existentes usando o comando docker images.

Por exemplo, se quisermos remover uma imagem com o nome “myproject_web”, podemos executar o seguinte comando:

$ docker rmi myproject_web

Passo 3: Automatizar o processo

Para automatizar o processo de remoção de imagens, podemos criar um script bash que executa os comandos acima. Aqui está um exemplo de script que remove as imagens Docker em cache e locais de um projeto Docker Compose:

#!/bin/bash

# Change to the project directory
cd /path/to/myproject

# Stop all running containers
docker-compose down

# Remove all cached images
docker-compose down --rmi cache

# Remove all locally built images
docker-compose down --rmi local

Neste exemplo, o script primeiro altera o diretório para o diretório raiz do projeto Docker Compose. Em seguida, ele executa o comando docker-compose down para parar todos os contêineres associados ao projeto. Depois, ele executa o comando docker-compose down --rmi cache para remover todas as imagens Docker em cache. Por fim, ele executa o comando docker-compose down --rmi local para remover todas as imagens Docker construídas localmente.

Para executar o script automaticamente em intervalos regulares, podemos usar o utilitário cron no Linux. Aqui está um exemplo de arquivo de cron que executa o script acima todos os dias às 3h da manhã:

0 3 * * * /path/to/myproject/cleanup.sh >> /path/to/myproject/cleanup.log 2>&1

Neste exemplo, o arquivo de cron executa o script /path/to/myproject/cleanup.sh todos os dias às 3h da manhã. A saída do script é redirecionada para o arquivo /path/to/myproject/cleanup.log. O 2>&1 no final redireciona também os erros para o arquivo de log.

Conclusão

A remoção regular de imagens Docker não utilizadas pode ajudar a economizar espaço em disco e melhorar o desempenho do sistema. Com o Docker Compose e scripts bash, podemos automatizar esse processo para que seja executado regularmente sem intervenção manual. Certifique-se de avaliar cuidadosamente quais imagens são seguras para remover antes de executar os comandos de remoção.

Andre Luiz Bellafronte

André Bellafronte é desenvolvedor de softwares, empresário e publicador de conteúdos nas horas vagas. Acredita que o conhecimento deva ser compartilhado livremente.

Você pode gostar...