Предупреждение: прочитайте полную статью, прежде чем печатать команды, которые вы можете сожалеть.
Если вы являетесь пользователем Docker (пусть он будет в производстве или на вашей машине для разработки), вы, возможно, накапливались довольно немного бесполезными данными. Есть некоторые существующие инструменты для очистки вашего демона неиспользованных изображений и контейнеров (например, Docker-GC ), но так как Докер API 1.25 Docker легко использовать Brune Команда, которая могла бы мне достаточно хорош для вас.
Базовое использование довольно простое:
$ sudo docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
deleted: sha256:ea43728b2d10e7b0fe24036f9531caac96bd02f779b95a6620110f00ccd3b002
deleted: sha256:022db612b3070971ce7d51778806a1f995a9c3aa1a741a6c0be0bca603787387
... approximately 2 gajillion hashes later...
Total reclaimed space: 5.64GB
Это приятно, но это не чистое неиспользованное. Для этого вы должны добавить - Все Возможность удалить каждое изображение и не только висячие:
$ sudo docker system prune --all
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
... moar hashes...
Total reclaimed space: 26.78GB
Конечно, это не может быть идеальным. Наличие кешей довольно полезно в конце концов. И есть только опция для этого: --фильтр (Только доступно, начиная с API 1.28 ). На момент моего письма есть только два фильтра: до и этикетка Отказ В моем случае я использую только до тот, который позволяет вам очистить все старше указанного временного времени.
Конечно, я не кладуте временную метку в команду, я использую Дата Для генерации временного утра на основе читаемой даты человека:
$ sudo docker system prune --all --filter until=$(date -d "1 month ago" +%s)
Эта команда использует замену через $ (команда) Это позволяет получить результат команды и ввести ее в другую как строку. Сама командование даты разлагается как: Дата -d <Описание времени> <Формат времени> , где +% s это формат, чтобы получить меток времени. Вы можете проверить Человек дата для получения дополнительной информации.
И Voilà 😃 Я редко нужен кэш, чтобы быть старше месяца на моем ноутбуке (и один месяц уже довольно консервативный, но это потому, что я редко проводишь хороший интернет Так что я кэширую как можно больше).
Наконец, если вы чувствуете авантюристы достаточно, вы можете добавить -Force Вариант, чтобы команда не попросила подтверждение. Я использую следующие в Acronjob на моем непрерывном сервере интеграции:
$ sudo docker system prune --force --all --filter until=$(date -d "1 week ago" +%s)
Счастливая уборка ♻️.
Примечание о Sudo. : На моей машине Dev (который является системой GNU/Linux) Я использую только Docker через Sudo. Потому что не делать это означает, что ваш пользователь имеет ту же мощность, что и root все время. Это связано с тем, что Docker Daemon является привилегированным процессом, работающим в качестве корня. Увидеть официальный Докер Безопасность страница.
Этот пост был первоначально опубликован на mayeu.me .
Оригинал: «https://dev.to/mayeu/cleaning-unused-docker-data-without-external-tools-e24»