Как я могу сказать, какие образы 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)
Другие вопросы по тегам