Я запускаю 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
изображение.
Ответ 1
Попробуйте docker rmi node
. Это должно сработать.
Увидеть все созданные контейнеры так же просто, как docker ps -a
.
Чтобы удалить все существующие контейнеры (а не изображения!), запустите docker rm $(docker ps -aq)
Ответ 2
Ниже перечислены некоторые способы удаления изображений/контейнеров докеров:
Удалить одно изображение
docker rmi image_name:version/image-id
Удалить все изображения
docker rmi $(docker images -qf "dangling=true")
Убейте контейнеры и удалите их:
docker rm $(docker kill $(docker ps -aq))
Примечание: Замените kill
на stop
для изящного выключения
Удалите все изображения, кроме "my-image"
Используйте grep для удаления всех, кроме my-image
и ubuntu
docker rmi $(docker images | grep -v 'ubuntu\|my-image' | awk {'print $3'})
Или (без awk)
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
Ответ 3
Удалить все контейнеры докеров
docker rm $(docker ps -a -q)
Удалить все изображения докеров
docker rmi $(docker images -q)
Ответ 4
Чтобы удалить изображение из Docker, используя идентификатор изображения:
-
Получить список всех изображений
docker images
-
Определите идентификатор изображения, которое вы хотите удалить, например:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
kweku360/java latest 08d3a9b8e166 2 weeks ago 5.733 GB'
-
Наконец, удалите изображение, используя идентификатор изображения (требуются только первые три цифры)
docker rmi 08d
Ответ 5
Образ:
- Список изображений
докер изображения
- Удалить одно изображение
Докер rmi image_name
- Принудительно удалить одно изображение
Докер rmi -f image_name
Контейнер:
- Список всех контейнеров
докер ps -a
- Удалить один контейнер
docker rm container_id
- Принудительно удалить один контейнер
docker rm -f container_id
Ответ 6
Обновление, как прокомментировал VonC в Как удалить старые контейнеры Docker.
С Docker 1.13 (4 квартал 2016 года) у вас теперь есть:
docker system prune
удаления удалит ВСЕ неиспользуемые данные (т.е. по порядку: контейнеры остановлены, тома без контейнеров и изображения без контейнеров).
См. PR 26108 и commit 86de7c0, в которых представлены несколько новых команд, помогающих упростить визуализацию занимаемого диском данных демона Docker и легко очистить "ненужный" избыток.
docker system prune
WARNING! This will remove:
- all stopped containers
- all volumes not used by at least one container
- all images without at least one container associated to them
Are you sure you want to continue? [y/N] y
Ответ 7
Удаление контейнеров
-
Чтобы удалить конкретный контейнер
docker rm CONTAINER_ID CONTAINER_ID
-
Удалить вышедшие контейнеры
docker ps -a -f status=exited
-
Удалить все контейнеры
docker ps -q -a | xargs docker rm
Удаление изображений
docker rmi IMAGE_ID
-
Удалить определенные изображения
-
Удалить оборванные изображения
Висячие изображения - это слои, которые не имеют отношения к каким-либо помеченным изображениям, поскольку изображения Docker состоят из нескольких изображений.
docker rmi -f $(docker images -f dangling=true -q)
-
Удалить все изображения Docker
docker rmi -f $(docker images -a -q)
Удаление томов
Чтобы docker volume ls
список томов, запустите docker volume ls
-
Удалить определенный том
docker volume rm VOLUME_NAME
-
Удалить висячие тома
docker volume rm $(docker volume ls -f dangling=true -q)
-
Удалить контейнер и его объемы
docker rm -v CONTAINER_NAME
Ответ 8
docker rm container_name
docker rmi image_name
docker help
rm Удалить один или несколько контейнеров
rmi Удалите одно или несколько изображений
Ответ 9
docker rmi 91c95931e552
Ответ об ошибке от демона: Конфликт, невозможно удалить 91c95931e552, потому что его использует контейнер 76068d66b290, используйте -f для принудительного использования FATA [0000] Ошибка: не удалось удалить одно или несколько изображений
Найти идентификатор контейнера,
# docker ps -a
# docker rm daf644660736
Ответ 10
Прежде всего, мы должны остановить и удалить контейнеры Docker, которые прикреплены к образу Docker, который мы собираемся удалить.
Итак, для этого сначала
-
docker stop container-id
- Чтобы остановить работающий контейнер -
docker rm container-id
- удалить/удалить контейнер
затем,
-
docker rmi image-id
- удалить/удалить изображение
Ответ 11
Для версий 1.13 и выше:
docker image rm [OPTIONS] IMAGE [IMAGE...]
Сравнение:
[OPTIONS]
, похоже, не имеет разницы.
--force , -f Force removal of the image
--no-prune Do not delete untagged parents
От: Представляем Docker 1.13
Изменена CLI
В Docker 1.13 мы перегруппировали каждую команду, чтобы сидеть под логическим объектом, с которым он взаимодействует. Например, list
и start
контейнеров теперь являются подкомандами docker container
и history
являются подкомандой docker image
.
Эти изменения позволяют нам очистить синтаксис CLI Docker, улучшить текст справки и упростить использование Docker. Старый синтаксис команд по-прежнему поддерживается, но мы призываем всех принять новый синтаксис.
Ответ 12
Docker предоставляет некоторые команды для удаления images
.
Показать/Удалить Images
:
docker images
docker images -a # All images
docker images --no-trunc # List the full length image IDs
docker images --filter "dangling=true" // Show unstage images
docker rmi $(docker images -f "dangling=true" -q) # Remove on unstages images
docker rmi <REPOSITORY> or <Image ID> # Remove a single image
docker image prune # Interactively remove dangling images
docker image prune -a # Remove all images
or
docker rmi -f $(sudo docker images -a -q)
Также вы можете также использовать параметры filter
для одновременного удаления набора изображений:
Пример:
$docker images --filter "before=<hello-world>" // It will all images before hello-world
$docker images --filter "since=<hello-world>" // It will all images since hello-world
Таким образом, вы можете удалить этот фильтр изображения следующим образом:
docker rmi $(docker images --filter "since=<hello-world>")
docker rmi $(docker images --filter "before=<hello-world>")
Ответ 13
Здесь оболочка script для удаления помеченного (именованного) изображения и контейнеров.
Сохранить как docker-rmi и запустить с помощью 'docker-rmi my-image-name'
#!/bin/bash
IMAGE=$1
if [ "$IMAGE" == "" ] ; then
echo "Missing image argument"
exit 2
fi
docker ps -qa -f "ancestor=$IMAGE" | xargs docker rm
docker rmi $IMAGE
Ответ 14
Если вы хотите автоматически/периодически очищать покинутые контейнеры и удалять изображения и тома, которые не используются запущенным контейнером, вы можете загрузить образ meltwater/docker-cleanup
.
Я использую это на производстве, так как мы развертываем несколько раз в день на нескольких серверах, и я не хочу идти на каждый сервер для очистки (это было бы больно).
Просто беги:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest
Он будет запускаться каждые 30 минут (или сколько бы вы ни установили его с помощью опции DELAY_TIME = 1800) и очищать вышедшие контейнеры и изображения.
Более подробная информация: https://github.com/meltwater/docker-cleanup/blob/master/README.md
Ответ 15
Удалите все из них, используя
Шаг 1: Убейте все контейнеры
for i in `sudo docker ps -a | awk '{ print $1 }'`; do sudo docker kill $i ; done
Шаг 2: сначала RM сначала
for i in `sudo docker ps -a | awk '{ print $1 }'`; do sudo docker rm $i ; done
Шаг 3: Удалите изображения с помощью силы
for i in `sudo docker images | awk '{ print $3}'`; do sudo docker rmi --force $i ; done
Используйте шаг 1, если вы получаете сообщение об ошибке, которое невозможно удалить из-за дочерних зависимостей
Ответ 16
Я предполагаю, что контейнер, использующий изображение, уже запущен. Вы можете попробовать использовать принудительный тег docker rmi --force [IMAGE]
Обратите внимание, что тогда у вас будет "свисающий контейнер" - контейнер без родительского изображения.
"Правильный" способ сделать это - сначала удалить контейнер. Если он работает, нет необходимости останавливать его в первую очередь, просто принудительно docker rm -f [CONTAINER]
контейнер, а также docker rm -f [CONTAINER]
Ответ 17
Для меня работала нормально:
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
debian jessie 86baf4e8cde9 3 weeks ago 123MB
ubuntu yakkety 7d3f705d307c 3 weeks ago 107MB
alpine 3.5 074d602a59d7 7 weeks ago 3.99MB
Затем перейдите и удалите изображение, запустив некоторые из них:
> docker rmi debian:jessie
> docker rmi ubuntu:yakkety
> docker rmi alipine:3.5
Ответ 18
Список изображений:
ahanjura@ubuntu:~$ sudo docker images
СКЛАД TAG IMAGE ID СОЗДАНО РАЗМЕР 88282f8eda00 19 секунд назад 308,5 Мб 13e5d3d682f4 19 часов назад 663 MB busybox2 последних 05fe66bb1144 20 часов назад 1,129 Мб Ubuntu 16,04 00fd29ccc6f1 5 дней назад 110,5 Мб убунта 14.04 67759a80360c 5 дней назад 221,4 MB питон 2.7 9e92c8430ba0 7 дней назад 680,7 MB busybox последние 6ad733544a63 6 недель назад 1.129 MB ubuntu 16.10 7d3f705d307c 5 месяцев назад 106.7 MB
Удалить изображения:
ahanjura@ubuntu:~$ sudo docker rmi 88282f8eda00
Удалено: sha256: 88282f8eda0036f85b5652c44d158308c6f86895ef1345dfa788318e6ba31194 Удалено: sha256: 4f211a991fb392cd794bc9ad8833149cd9400c5955958c4017b1e2dc415e25e9 Удалено: sha256: 8cc6917ac7f0dcb74969ae7958fe80b4a4ea7b3223fc888dfe1aef42f43df6f8 Удалено: sha256: b74a8932cff5e61c3fd2cc39de3c0989bdfd5c2e5f72b8f99f2807595f8ece43
ahanjura@ubuntu:~$ sudo docker rmi 13e5d3d682f4
Ошибка от демона: конфликт: невозможно удалить 13e5d3d682f4 (необходимо принудительно) - изображение используется остановленным контейнером 5593e25eb638
Удалить силой:
ahanjura@ubuntu:~$ sudo docker rmi -f 13e5d3d682f4
Удалено: sha256: 13e5d3d682f4de973780b35a3393c46eb314ef3db45d3ae83baf2dd9d702747e Исключено: sha256: 3ad9381c7041c03768ccd855ec86caa6bc0244223f10b0465c4898bdb21dc378 Исключено: sha256: 5ccb917bce7bc8d3748eccf677d7b60dd101ed3e7fd2aedebd521735276606af Исключено: sha256: 18356d19b91f0abcc04496729c9a4c49e695dbfe3f0bb1c595f30a7d4d264ebf
Ответ 19
В моем случае проблема в том, что у меня есть буксируемые изображения с тем же именем
решение заключается в добавлении тега после имени или идентификатора
sudo docker rmi <NAME>:<TAG>
например:
sudo docker rmi php:7.0.4-fpm