Я запускаю Docker под Vagrant под OS X 10.8.4 (Mountain Lion), и всякий раз, когда я пытаюсь удалить сохраненное изображение, я получаю сообщение об ошибке:
$ docker rmi some-image-id
2013/07/15 hh:mm:ss unexpected JSON input
Согласно rmi
справке, правильный синтаксис есть docker rmi IMAGE [IMAGE...]
, и я не уверен, что с этим делать.
Как я могу удалить изображение?
$ docker version
Client version: 0.4.8
Server version: 0.4.8
Go version: go1.1
$docker info
Containers: 1
Images: 3
Интересно, что когда я бегу docker ps
, контейнеры вообще не появляются. Бег docker images
показывает четыре (4) base
изображения и одно (1) node
изображение.
docker info
показывает фактическое количество изображений, вы можете попробовать,./docker images -a -q | sort | uniq | wc -l
это должно быть одинаковым результатом (-a для всех изображений, -q только для идентификаторов).docker ps
показывает только активные контейнеры, вы можете сделать,docker ps -a
чтобы просмотреть все контейнеры-D
опцией и клиентом?docker -d -D& ; docker -D rmi <id>
, Вы тоже можете попробоватьCID=$(docker run -d ubuntu bash); ID=$(docker commit $CID); docker rmi $ID
?Ответы:
Попробуй
docker rmi node
. Это должно работать.Просмотреть все созданные контейнеры так же просто, как
docker ps -a
.Чтобы удалить все существующие контейнеры (не изображения!), Запустите
docker rm $(docker ps -aq)
источник
docker ps -aq | Foreach-Object { docker stop $_; docker rm $_; }
Ниже приведены некоторые способы удаления образов / контейнеров докеров:
Удалить одно изображение
Удалить все изображения
Убить контейнеры и удалить их:
Примечание: замените
kill
наstop
для корректного выключенияУдалить все изображения, кроме "my-image"
Используйте grep, чтобы удалить все, кроме
my-image
иubuntu
Или (без awk)
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
источник
docker rmi $(docker images -qf "dangling=true")
docker rm $(docker kill $(docker ps -a -q))
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
Удалить все контейнеры докеров
Удалить все изображения докера
источник
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
sudo docker rmi -f $(sudo docker images | grep "<none>" | awk "{print \$3}")
а затем удалить живые метки релиза 2015 года (например,live-20150121223
), которые мы можем сделатьsudo docker rmi -f $(sudo docker images | grep live-2015 | awk "{print \$3}")
Чтобы удалить изображение из Docker, используя идентификатор изображения:
Получить список всех изображений
Определите идентификатор изображения, которое вы хотите удалить, например:
Наконец, удалите изображение, используя идентификатор изображения (требуются только первые три цифры)
источник
Образ:
Контейнер:
источник
Обновление, как прокомментировал VonC в Как удалить старые контейнеры Docker .
С Docker 1.13 (4 квартал 2016 года) у вас теперь есть:
docker system prune
удалит ВСЕ неиспользуемые данные (т.е. по порядку: контейнеры остановлены, тома без контейнеров и изображения без контейнеров).См. PR 26108 и commit 86de7c0 , в которых представлены несколько новых команд, которые помогут упростить визуализацию того, сколько места занимают данные демона Docker на диске и позволяют легко очистить «ненужный» избыток.
источник
Удаление контейнеров
Чтобы удалить конкретный контейнер
Для одного изображения
Для нескольких изображений
Удалить вышедшие контейнеры
Удалить все контейнеры
Удаление изображений
Удалить определенные изображения
для одного изображения
для нескольких изображений
Удаление висячих изображений
Висячие изображения - это слои, которые не имеют никакого отношения к помеченным изображениям, поскольку изображения Docker состоят из нескольких изображений.
Удалить все изображения Docker
Удаление томов
Чтобы просмотреть тома, запустите
docker volume ls
Удалить определенный том
Удалить висячие тома
Удалить контейнер и его объемы
источник
CONTAINER_ID
?docker rm container_name
docker rmi image_name
источник
Найти идентификатор контейнера,
источник
daf644660736
? Как это связано с любым из предыдущих?Прежде всего, мы должны остановить и удалить контейнеры Docker, которые прикреплены к образу Docker, который мы собираемся удалить.
Итак, для этого, во-первых
docker stop container-id
- остановить работающий контейнерdocker rm container-id
- удалить / удалить контейнертогда,
docker rmi image-id
- удалить / удалить изображениеисточник
Для версий 1.13 и выше:
Сравнение:
docker image rm
иdocker rmi
,[OPTIONS]
, кажется , нет никакой разницы.От: Представляем Docker 1.13
источник
Docker предоставляет некоторую команду для удаления
images
.Пример:
Таким образом, вы можете удалить этот фильтр изображения следующим образом:
источник
Удалить их все, используя
Шаг 1: убить все контейнеры
Шаг 2: RM их первым
Шаг 3: Удалите изображения, используя силу
Используйте шаг 1, если вы получаете сообщение о том, что его нельзя удалить из-за дочерних зависимостей
источник
Если вы хотите автоматически / периодически очищать закрытые контейнеры и удалять изображения и тома, которые не используются запущенным контейнером, вы можете загрузить изображение
meltwater/docker-cleanup
.Я использую это на производстве, так как мы развертываем несколько раз в день на нескольких серверах, и я не хочу идти на каждый сервер для очистки (это было бы больно).
Просто беги:
Он будет запускаться каждые 30 минут (или сколько бы вы ни установили его с помощью опции DELAY_TIME = 1800) и очищать вышедшие контейнеры и изображения.
Более подробная информация: https://github.com/meltwater/docker-cleanup/blob/master/README.md
источник
Вот сценарий оболочки для удаления тегового (именованного) изображения и его контейнеров. Сохраните как docker-rmi и запустите, используя 'docker-rmi my-image-name'
источник
xargs -r
заставить его работать в случае несоответствующего контейнера.Почему никто не упомянул
docker-compose
! Я просто использовал его в течение одной недели, и я не могу выжить без него. Все, что вам нужно, это написать yml, который занимает всего несколько минут изучения, и тогда вы готовы к работе. Он может загружать образы, контейнеры (которые необходимы в так называемых сервисах) и позволяет просматривать журналы так же, как вы используете их с собственными командами docker. Попробуй:До того, как я использовал docker-compose, я написал свой собственный скрипт оболочки, затем мне пришлось настраивать скрипт всякий раз, когда это было необходимо, особенно когда менялась архитектура приложения. Теперь мне больше не нужно это делать, благодаря docker-compose.
источник
docker-compose
является инструментом оркестровки и часто непрактичен для использования в простых проектах. В контексте этого вопроса предпочтительным является автономноеdocker
решение (не требующее использования часто придирчивых конфиговdocker-compose.yml
). Кроме того, здесь уже есть много хороших ответов.Для меня нормально работало следующее:
Затем удалите изображение, запустив что-то вроде этого:
источник
Список изображений:
Удалить изображения:
Удалить силой:
источник
В моем случае проблема в том, что у меня есть буксируемые изображения с тем же именем, решение заключается в добавлении тега после имени или идентификатора
например:
источник