Как я могу сказать, какие образы Docker безопасно удалить?
Когда я бегу docker image ls
я вижу это
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> c012c1e2eb45 4 hours ago 2.59GB
<none> <none> a2013debf751 5 hours ago 2.59GB
<none> <none> 0bbb2f67083c 5 hours ago 2.59GB
<none> <none> af18b070061b 29 hours ago 182MB
<none> <none> 186a8fac122e 35 hours ago 1.67GB
<none> <none> 0f90c1bb12a3 35 hours ago 182MB
<none> <none> b94009e70416 13 days ago 631MB
<none> <none> 880d8e6713cf 2 weeks ago 631MB
b/2018-external latest 128d208a6c83 2 weeks ago 207MB
2018-external latest 128d208a6c83 2 weeks ago 207MB
b/2018-web <none> 128d208a6c83 2 weeks ago 207MB
nginx latest 9e7424e5dbae 2 weeks ago 108MB
node 8-alpine 4db2697ce114 4 weeks ago 67.7MB
b_web latest d5a0ea011c0a 5 weeks ago 182MB
<none> <none> 957c22ababec 5 weeks ago 182MB
docker_web latest 70b443ed0495 5 weeks ago 182MB
docker_app latest 509d58a68224 5 weeks ago 756MB
b_app latest 509d58a68224 5 weeks ago 756MB
mysql 5.6 96dc914914f5 5 weeks ago 299MB
mysql latest 5fac85ee2c68 8 weeks ago 408MB
redis latest 1fb7b6c8c0d0 2 months ago 107MB
alpine 3.6 76da55c8019d 2 months ago 3.97MB
nginx 1.13.3-alpine ba60b24dbad5 5 months ago 15.5MB
keymetrics/pm2-docker-alpine 6 4a09bfc067d6 5 months ago 75.3MB
dockercloud/cli latest 051238cd0a37 6 months ago 64.2MB
andrewmclagan/nginx-hhvm latest ec6cc741eb0e 7 months ago 580MB
nginx 1.10 0346349a1a64 8 months ago 182MB
php 7.0.8-fpm 75b880f3a420 17 months ago 375MB
tutum/haproxy latest 33bc771bec1e 18 months ago 232MB
php 7.0.4-fpm 81d7a2fdc6dc 21 months ago 494MB
Как мне узнать, какое изображение безопасно удалить?
Мое внимание состоит в том, чтобы удалить их всех, но я не уверен, стоит ли мне быть более осторожным перед этим.
4 ответа
Ты можешь использовать docker image prune
убрать "свисающие" изображения; те, которые не помечены (например, <none>
) и не ссылаются ни на один работающий контейнер.
Я нахожу docker image prune -a
полезнее. Это удалит любое изображение, которое не используется работающим контейнером. В этом смысле prune -a - это шаг очистки, который вы можете выполнить после правильной работы среды.
Изображения, которые называются висящими, безопасно удалить. Это изображения, которые не имеют тега. Они появляются, когда появляется новая сборка изображения, а новое изображение принимает тег, оставляя свисающие изображения с <none>:<none>
тег.
Висячие изображения могут быть перечислены с помощью docker images --filter "dangling=true"
и может быть удален, запустив docker image prune
,
Очистка всех неиспользуемых или висячих образов, контейнеров, томов и сетей:
Очистите все висящие ресурсы (изображения, контейнеры, тома и сети) (не связанные с контейнером):
docker system prune
Удалите все остановленные контейнеры и все неиспользуемые изображения (не только свисающие изображения):
docker system prune -a
Удалить одно или несколько конкретных изображений:docker rmi Image Image
Удалить оборванные изображения:docker images purge
Удаление изображений по шаблону:docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
Удалить все изображения:docker rmi $(docker images -a -q)
Удалить один или несколько конкретных контейнеров: docker rm ID_or_Name ID_or_Name
Удалить контейнер при выходе (запустить и удалить): docker run --rm image_name
Удалить все вышедшие контейнеры: docker rm $(docker ps -a -f status=exited -q)
Удалить контейнеры, используя более одного фильтра: docker rm $(docker ps -a -f status=exited -f status=created -q)
Остановите и удалите все контейнеры:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Происхождение статьи: digitalocean
Эта команда также работает для меня.
docker rmi $(docker images -f "dangling=true" -q)