Подтвердить что ты не робот

Docker удаляет <none> изображения TAG

[email protected]:~# docker images -a        
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>                  <none>              5e2dfc857e73        5 days ago          261.6 MB
<none>                  <none>              d053e988f23d        5 days ago          261.6 MB
<none>                  <none>              1d5d4a2d89eb        5 days ago          261.6 MB
<none>                  <none>              ea0d189fdb19        5 days ago          100.5 MB
<none>                  <none>              26c6175962b3        5 days ago          100.5 MB
<none>                  <none>              73d5cec4a0b3        5 days ago          100.5 MB
<none>                  <none>              e19590e1bac1        5 days ago          100.5 MB

Я пробовал следующее:

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

И следующее:

docker rmi $(docker images -f "dangling=true" -q)

Вы получите следующую ошибку:

docker: "rmi" requires a minimum of 1 argument.
See 'docker rmi --help'.

Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]

Remove one or more images
4b9b3361

Ответ 1

Вы можете попробовать и перечислить только немаркированные изображения (те, у которых нет меток или с меткой без тега):

docker images -q -a | xargs docker inspect --format='{{.Id}}{{range $rt := .RepoTags}} {{$rt}} {{end}}'|grep -v ':'

Однако некоторые из этих немаркированных изображений могут понадобиться другим.

Я предпочитаю удалять только оборванные изображения:

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

Как я уже упоминал для докера 1.13+ в сентябре 2016 года в " "Как удалить старые и неиспользуемые изображения Docker" , вы также можете сделать image prune команда:

docker image prune

Как говорится, Джанака Бандара упоминает в комментариях:

Это не удалило для меня <none> -оцененные изображения (например, foo/bar:<none>); Мне пришлось использовать docker images --digests и docker rmi foo/[email protected]<digest>

Янака ссылается на Как удалить подписанное изображение с тегом "от Paul V. Novarese:

# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
pvnovarese/mprime        latest              459769dbc7a1        5 days ago          4.461 MB
pvnovarese/mprime        <none>              459769dbc7a1        5 days ago          4.461 MB

Диагностические шаги

Вы можете увидеть разницу в этих двух записях, если используете параметр --digests=true (немаркированная запись имеет дайджест подписи Доккер-контента):

# docker images --digests=true
REPOSITORY               TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
pvnovarese/mprime        latest              <none>                                                                    459769dbc7a1        5 days ago          4.461 MB
pvnovarese/mprime        <none>              sha256:0b315a681a6b9f14f93ab34f3c744fd547bda30a03b55263d93861671fa33b00   459769dbc7a1        5 days ago     

Обратите внимание, что Павел также упоминает вопрос мобильности 18892:

После вытягивания подписанного изображения в "docker images" появляется "дополнительная" запись (с тегом <none>).
Это затрудняет rmi изображение (вы должны принудительно его или сначала удалить правильно помеченную запись или удалить путем дайджестова.

Ответ 2

docker images | grep none | awk '{ print $3; }' | xargs docker rmi

Вы можете попробовать это просто

Ответ 3

docker image prune удаляет все оборванные изображения (те, у которых нет тега). docker image prune -a также удалит все изображения, у которых нет контейнера, который их использует.

Разница между оборванными и неиспользуемыми изображениями объясняется в fooobar.com/questions/313387/....

Ответ 4

Вы можете проверить, не работает ли фильтр 'dangling'

$ docker images -f "dangling=true" -q
Error response from daemon: Invalid filter 'dangling'

Используйте черновую систему Docker для удаления оборванных изображений

$ docker system prune
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all dangling build cache
Are you sure you want to continue? [y/N]

Вы можете использовать --force для не запроса подтверждения

$ docker system prune --force

Ответ 5

Согласно документации докера вы можете перечислить только непомеченные (висячие) изображения с

$ docker images -f "dangling=true"

и перенаправить их в команду docker rmi следующим образом:

$ docker rmi $(docker images -f "dangling=true" -q) --force

Обратите внимание, что параметр -q показывает только числовые идентификаторы контейнеров.

Ответ 6

Вы можете перейти к docker rmi $(docker images -f "dangling=true" -q). Смотрите документацию по изображениям для получения дополнительной информации.

$ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
<none>                      <none>              94870cda569b        4 seconds ago       673MB
python                      2.7                 320a06f42b5f        10 days ago         673MB
mysql                       latest              e799c7f9ae9c        2 months ago        407MB
gcavalcante8808/semaphore   latest              86e863e11461        2 months ago        537MB
redis                       latest              e32ef7250bc1        2 months ago        184MB
rabbitmq                    3.6.9-management    7e69e14cc496        2 months ago        179MB
rabbitmq                    3.6.9               eb2e4968538a        2 months ago        179MB
jordan/rundeck              latest              6d40b57b1572        2 months ago        660MB
rabbitmq                    3.5.6-management    dbfe8d18809a        19 months ago       304MB

$ docker rmi $(docker images --format '{{.ID}}' --filter=dangling=true)
Deleted: sha256:94870cda569b8cf5f42be25af107d464c993b4502a1472c1679bf2d213b6c0a6

Ответ 7

Я нашел, что docker image prune -f наиболее полезен, и я использую его все время во время моей повседневной работы, использование тега -f не будет запрашивать подтверждение. Подробнее здесь

Ответ 8

Удалите изображения с none в качестве имени репозитория, используя следующее:

docker rmi $(docker images | grep "^<none" | awk '{print $3}')

Удалить изображения с тегом none или именем репозитория:

docker rmi $(docker images | grep "none" | awk '{print $3}')

Ответ 9

Чтобы удалить оборванные изображения, используйте:

docker image rm $(docker images --format "{{.ID}}" --filter "dangling=true")

Пожалуйста, обратитесь к моему ответу здесь для более подробного описания: https://unix.stackexchange.com/a/445664/292327

Ответ 10

Команда ниже работает для меня. это просто "grep" "images и получите идентификатор образа докера и удалили все изображения. Простая одиночная команда.

docker rmi $(docker images |grep "<none>"| awk '{print $3}')

Ответ 11

docker system prune добьется цели, удалив

- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache

Но используйте это с осторожностью!

Ответ 12

Это просто и понятно,

Даже я потратил 3 дня, чтобы понять эту простую и четкую ошибку.

Образ докера не построен успешно

Step 7/13 : COPY jupyter_notebook_config.py /root/.jupyter/
 ---> bf29ce6fe6dc
Step 8/13 : COPY notebooks /notebooks
COPY failed: stat /var/lib/docker/tmp/docker-builder776981166/notebooks: no such file or directory
[email protected]:~/Documents/sam/dockerDem$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              bf29ce6fe6dc        9 seconds ago       1.27GB
ubuntu              16.04               a51debf7e1eb        3 weeks ago         116MB

Затем я удалил 8-ю строку из Dockerfile, на этот раз это был сигнал успеха.

Successfully built b6724370f8ca
Successfully tagged dem:expo
[email protected]:~/Documents/sam/dockerDem$ docker run -it -p 8888:8888 dem:expo
[I 06:11:38.984 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 06:11:39.011 NotebookApp] Serving notebooks from local directory: /
[I 06:11:39.011 NotebookApp] The Jupyter Notebook is running at:
[I 06:11:39.011 NotebookApp] http://(296d81166725 or 127.0.0.1):8888/?token=496feb282ef749c05277ef57a51e8a56fedb1c6b337b9f92

Он говорит, что успешно помечен dem: expo, эта строка является imp во время процесса докера.

Ответ 13

Это расширение ответа tansadio:

Если вы получаете следующую ошибку:

Error response from daemon: conflict: unable to delete <> (must be forced) - image is being used by stopped container <>

Вы можете форсировать это с помощью --force:

docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force

Ответ 14

docker rmi -f $ (изображения докера -a | awk 'NR> 1 && $ 2 == "" {print $ 3}')

Ответ 15

Следующее удалит все <none> изображения

docker rmi $(docker images | grep none | awk '{print $3}')

Вы можете принудительно удалить удаление, изменив docker rmi на docker rmi -f, хотя я не рекомендую это делать.

Некоторые изображения <none> могут быть связаны с другими изображениями, поэтому в целях безопасности не используйте тег -f.

Ответ 16

попробуйте

docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "<none>" {print $3}') , в то время как могут быть более чистые команды

Обновлено

Ответ 17

Просто удалите изображения, используя их идентификаторы:

# docker rmi 5e2dfc857e73 d053e988f23d ...

Ответ 18

Висячие изображения - это призраки из предыдущих сборок и сборок, просто удалите их с помощью: docker rmi $ (docker images -f "dangling = true" -q)

Ответ 19

docker rmi $(docker images -a -q)

Указывает следующие изображения, которые используются. Я думаю, что эта команда избавляется от нежелательных образов.