Не далее чем вчера я писал про то, как можно почистить немного места, если ваш Maven разросся как следует. А сегодня продолжим про другие утилиты. Возьмём, к примеру, Docker. Очень полезная штука в ряде случаев, как-нибудь позднее напишу, как я его использовал. А пока расскажу, как я ликвидировал то, что от него осталось.
Docker - очень крутая штука, когда речь заходит про работу с томами (volume
). Некоторые писатели докерфайлов очень любят создавать тома. Очень-очень любят создавать тома. А потом эти тома начинают скапливаться на винчестере, ведь не каждый пользователь догадывается про то, что они там занимают место. Итак, воспользуемся одной из двух команд:
docker volume ls -f dangling=true
docker volume ls danglng=true
Список не пуст? Поздравляю, у вас на диске лежит мусор, оставшийся от предыдущих контейнеров. Можно скопировать названия этих контейнеров и сделать docker volume rm первый второй третий
, например, воспользовавшись автодополнением. А можно поступить одним из способов (какой запомните, мне ближе первый):
docker volume rm `docker volume ls -f dangling=true | awk '{print $2}'`
docker volume rm `docker volume ls -q -f dangling=true`
Или даже так, втупую:
docker volume rm `docker volume ls -q`
Казалось бы, ничего страшного, что мы отдаём команду удалить все тома: тома, которые используются, удалены не будут. Но я бы не стал ставить на то, что такое поведение сохранится в будущих версиях Docker, поэтому выбираю первый способ. Да, он самый длинный, но мало ли… Бережёного бог бережёт.
А ещё бывает так, что вы когда-то запуллили себе образ и никогда его не использовали. Ну, у вас-то наверняка такого не бывает, это у меня бывает! Посмотреть список имаджей и сколько они занимают, можно так:
docker images
Тогда можно сделать
docker rmi `docker images | awk '{print $3}'`
Или даже втупую
docker rmi `docker images -q`
Ну, вы догадались уже, какой из способов выбираю я?
А чтобы не пришлось искать dangling тома, которые потерялись и не принадлежат никакому из контейнеров, существующие контейнеры можно убивать вот так:
docker rm -v mariadb
Где mariadb
- имя ненужного контейнера. Кстати, после убийства контейнера можно убить и образы, которые использовались при его создании.
Ах да, а про то, что образы лучше брать на основе Alpine Linux, вы, наверное, и так уже знаете. Да ведь? Например, я недавно писал небольшую приблуду, которая подключается к удалённому Redis. И вот какие были варианты:
[msi] ❯ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis alpine 2aabafe89cbf 13 days ago 29.01 MB
redis latest 4465e4bcad80 2 weeks ago 185.7 MB
Нетрудно догадаться, какой из вариантов я выбрал? А вот и не угадали, правильный ответ: оба. Надо было оба проверить.
А вот немножко живого видео: