Как освободить потраченное впустую место, используемое докером?

Я установил докер на моем сервере. Я использую Дженкинс для КИ. Эти инструменты действительно крутые. Но, к сожалению, я до сих пор не могу понять, как вернуть потраченное впустую место.

Я пробовал разные вещи, предлагаемые в Интернете, и используя их, я могу освободить только часть потерянного пространства. Мне не нужна никакая история и т. Д.

Я пробовал разные вещи, как грубо docker rm $(docker ps -aq) а также docker rmi $(docker images -q) в то время как некоторые из контейнеров работают, что предотвращает их удаление.

Я также попробовал этот сценарий и аналогичные.

#!/bin/bash

# remove exited containers:
docker ps --filter status=dead --filter status=exited -aq | xargs -r docker rm -v

# remove unused images:
docker images --no-trunc | grep '<none>' | awk '{ print $3 }' | xargs -r docker rmi

# remove unused volumes:
find '/var/lib/docker/volumes/' -mindepth 1 -maxdepth 1 -type d | grep -vFf <(
  docker ps -aq | xargs docker inspect | jq -r '.[] | .Mounts | .[] | .Name | select(.)'
) | xargs -r rm -fr

Я хотел бы ожидать, что после первой сборки всех изображений я установил фиксированный размер, применив приведенные выше команды очистки. Другими словами, я хочу, чтобы последующие сборки с примененной очисткой не увеличивали потраченное впустую пространство.

Но в любом случае каждое выполнение сборки докера занимает новое пространство, которое я не могу освободить.

Каталог /var/lib/docker/overlay растет и в конце концов не учитывает мои очистки.

Где я не прав?

2 ответа

В последних версиях Docker теперь вы можете использовать docker system prune команда (с --all вариант полной очистки).

https://docs.docker.com/engine/reference/commandline/system_prune/

Для удаления томов используйте:

docker volume prune

Для удаления сетей используйте:

docker network prune

Для удаления всех остановленных контейнеров используйте:

docker container prune

Для удаления неиспользуемых изображений используйте:

docker image prune
Другие вопросы по тегам