Как освободить потраченное впустую место, используемое докером?
Я установил докер на моем сервере. Я использую Дженкинс для КИ. Эти инструменты действительно крутые. Но, к сожалению, я до сих пор не могу понять, как вернуть потраченное впустую место.
Я пробовал разные вещи, предлагаемые в Интернете, и используя их, я могу освободить только часть потерянного пространства. Мне не нужна никакая история и т. Д.
Я пробовал разные вещи, как грубо 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