Ответ 1
Попробуйте docker rmi node
. Это должно сработать.
Увидеть все созданные контейнеры так же просто, как docker ps -a
.
Чтобы удалить все существующие контейнеры (а не изображения!), запустите docker rm $(docker ps -aq)
Я запускаю 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 rmi node
. Это должно сработать.
Увидеть все созданные контейнеры так же просто, как docker ps -a
.
Чтобы удалить все существующие контейнеры (а не изображения!), запустите docker rm $(docker ps -aq)
Ниже перечислены некоторые способы удаления изображений/контейнеров докеров:
docker rmi image_name:version/image-id
docker rmi $(docker images -qf "dangling=true")
docker rm $(docker kill $(docker ps -aq))
Примечание: Замените kill
на stop
для изящного выключения
Используйте 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))
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
Чтобы удалить изображение из Docker, используя идентификатор изображения:
Получить список всех изображений
docker images
Определите идентификатор изображения, которое вы хотите удалить, например:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
kweku360/java latest 08d3a9b8e166 2 weeks ago 5.733 GB'
Наконец, удалите изображение, используя идентификатор изображения (требуются только первые три цифры)
docker rmi 08d
докер изображения
Докер rmi image_name
Докер rmi -f image_name
докер ps -a
docker rm container_id
docker rm -f container_id
Обновление, как прокомментировал 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
Чтобы удалить конкретный контейнер
docker rm CONTAINER_ID CONTAINER_ID
Для одного изображения
docker rm 70c0e19168cf
Для нескольких изображений
docker rm 70c0e19168cf c2ce80b62174
Удалить вышедшие контейнеры
docker ps -a -f status=exited
Удалить все контейнеры
docker ps -q -a | xargs docker rm
docker rmi IMAGE_ID
Удалить определенные изображения
для одного изображения
docker rmi ubuntu
для нескольких изображений
docker rmi ubuntu alpine
Удалить оборванные изображения
Висячие изображения - это слои, которые не имеют отношения к каким-либо помеченным изображениям, поскольку изображения 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
docker rm container_name
docker rmi image_name
docker help
rm Удалить один или несколько контейнеров
rmi Удалите одно или несколько изображений
docker rmi 91c95931e552
Ответ об ошибке от демона: Конфликт, невозможно удалить 91c95931e552, потому что его использует контейнер 76068d66b290, используйте -f для принудительного использования FATA [0000] Ошибка: не удалось удалить одно или несколько изображений
Найти идентификатор контейнера,
# docker ps -a
# docker rm daf644660736
Прежде всего, мы должны остановить и удалить контейнеры Docker, которые прикреплены к образу Docker, который мы собираемся удалить.
Итак, для этого сначала
docker stop container-id
- Чтобы остановить работающий контейнерdocker rm container-id
- удалить/удалить контейнерзатем,
docker rmi image-id
- удалить/удалить изображениеДля версий 1.13 и выше:
docker image rm [OPTIONS] IMAGE [IMAGE...]
Сравнение:
docker image rm
иdocker rmi
, [OPTIONS]
, похоже, не имеет разницы.
--force , -f Force removal of the image
--no-prune Do not delete untagged parents
Изменена CLI
В Docker 1.13 мы перегруппировали каждую команду, чтобы сидеть под логическим объектом, с которым он взаимодействует. Например,
list
иstart
контейнеров теперь являются подкомандамиdocker container
иhistory
являются подкомандойdocker image
.Эти изменения позволяют нам очистить синтаксис CLI Docker, улучшить текст справки и упростить использование Docker. Старый синтаксис команд по-прежнему поддерживается, но мы призываем всех принять новый синтаксис.
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>")
Здесь оболочка 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
Если вы хотите автоматически/периодически очищать покинутые контейнеры и удалять изображения и тома, которые не используются запущенным контейнером, вы можете загрузить образ 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
Удалите все из них, используя
Шаг 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, если вы получаете сообщение об ошибке, которое невозможно удалить из-за дочерних зависимостей
Я предполагаю, что контейнер, использующий изображение, уже запущен. Вы можете попробовать использовать принудительный тег docker rmi --force [IMAGE]
Обратите внимание, что тогда у вас будет "свисающий контейнер" - контейнер без родительского изображения.
"Правильный" способ сделать это - сначала удалить контейнер. Если он работает, нет необходимости останавливать его в первую очередь, просто принудительно docker rm -f [CONTAINER]
контейнер, а также docker rm -f [CONTAINER]
Для меня работала нормально:
> 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
Список изображений:
[email protected]:~$ 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
Удалить изображения:
[email protected]:~$ sudo docker rmi 88282f8eda00
Удалено: sha256: 88282f8eda0036f85b5652c44d158308c6f86895ef1345dfa788318e6ba31194 Удалено: sha256: 4f211a991fb392cd794bc9ad8833149cd9400c5955958c4017b1e2dc415e25e9 Удалено: sha256: 8cc6917ac7f0dcb74969ae7958fe80b4a4ea7b3223fc888dfe1aef42f43df6f8 Удалено: sha256: b74a8932cff5e61c3fd2cc39de3c0989bdfd5c2e5f72b8f99f2807595f8ece43
[email protected]:~$ sudo docker rmi 13e5d3d682f4
Ошибка от демона: конфликт: невозможно удалить 13e5d3d682f4 (необходимо принудительно) - изображение используется остановленным контейнером 5593e25eb638
Удалить силой:
[email protected]:~$ sudo docker rmi -f 13e5d3d682f4
Удалено: sha256: 13e5d3d682f4de973780b35a3393c46eb314ef3db45d3ae83baf2dd9d702747e Исключено: sha256: 3ad9381c7041c03768ccd855ec86caa6bc0244223f10b0465c4898bdb21dc378 Исключено: sha256: 5ccb917bce7bc8d3748eccf677d7b60dd101ed3e7fd2aedebd521735276606af Исключено: sha256: 18356d19b91f0abcc04496729c9a4c49e695dbfe3f0bb1c595f30a7d4d264ebf
В моем случае проблема в том, что у меня есть буксируемые изображения с тем же именем решение заключается в добавлении тега после имени или идентификатора
sudo docker rmi <NAME>:<TAG>
например:
sudo docker rmi php:7.0.4-fpm