Рубрики
Uncategorized

Уборка неиспользуемых данных докера без внешних инструментов

Предупреждение: прочитайте полную статью, прежде чем печатать команды, которые вы можете сожалеть. Если вы являетесь пользователем Docker (могут … помечены с Docker, DevOps, Blog.

Предупреждение: прочитайте полную статью, прежде чем печатать команды, которые вы можете сожалеть.

Если вы являетесь пользователем 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»