Изображение используется остановленным контейнером

Я пытаюсь удалить контейнер докера с помощью этой команды:

docker rmi <Image-Id>

Очевидно, я заменил Image-Id на Id, который использую:

docker images

Но я вижу ошибку ниже:

Error response from daemon: conflict: unable to delete <Image-ID> (must be forced) - image is being used by stopped container xxxxxxxxxxx
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
124
0
95 719
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Вам нужно удалить остановленный контейнер с помощью docker rm, а затем вы можете удалить образ, который он использует с docker rmi.

Это часть любого полного ответа. Вы можете принудительно удалить или удалить остановленное изображение.

bmacnaughton 07.11.2018 18:47
Ответ принят как подходящий

Также можно использовать --force , -f Принудительное удаление образа

If you use the -f flag and specify the image’s short or long ID, then this command untags and removes all images that match the specified ID.

  docker rmi -f <image_id> 

Примечание: эта команда удаляет изображения, используемые контейнерами.

Спасибо, все сработало, но есть проблема. Я удалил образ размером 10 ГБ, но после его удаления я не вижу никаких изменений в свободном пространстве на диске.

Mehrdad Babaki 06.07.2018 11:36

вы удаляли тома, прикрепленные с изображением, и проверяли ли вы размер изображения каждого

Adiii 06.07.2018 11:48

Не совсем, я новичок в докере. Я попробую этот инструмент. Кстати, могу ли я использовать командную строку для определения громкости и их удаления?

Mehrdad Babaki 06.07.2018 13:22

да docker volume ls; для перечисления тома и удаления, docker volume rm v_id

Adiii 07.07.2018 02:23

Если вы изменили Dockerfile и используете docker compose, вы можете просто перестроить свой образ, запустив docker-compose с опцией --build!

Если вы внесли какие-либо изменения в Dockerfile, вам не следует удалять образ самостоятельно, просто используйте флаг --build с docker-compose, чтобы он перестроил новый образ с изменениями.

ans1genie 04.04.2019 15:37

Вы также можете обнаружить, что остановили контейнеры, вызывающие блокировку. Сначала удалите их, используя:

docker rm  $(docker ps -q -a)

Здесь мы перечисляем процессы докеров только по идентификатору, а затем удаляем их; однако docker rm удаляет только остановленные контейнеры.

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

docker image rm <image_id>

Контейнеры Docker запускаются поверх образов докеров, вы можете удалить образ, только если он не прикреплен к какому-либо контейнеру.! Итак, вам нужно остановить контейнер и удалить контейнер, после чего вы можете удалить идентификатор изображения.

docker stop container-id и docker rm идентификатор контейнера

Затем попробуйте удалить изображение docker rmi image-id

Дополнительная информация приведена в ссылке ниже. Ваше здоровье.!

https://docs.docker.com/config/pruning/

Это должен быть правильный ответ после процесса остановки контейнера (docker-compose stop) -> удалить контейнер (docker rm <имя контейнера>) -> удалить связанные изображения (docker rmi <image_id>).

kta 16.03.2020 02:57

Вы должны сначала удалить контейнер.
Принудительный - это последний метод.

#check container
docker ps -a

#remove container
docker rm containerID

Ясно лучший ответ. Единственный, кто объясняет, как получить список остановленных контейнеров.

Marco 27.05.2020 22:00

В дополнение к другим ответам у меня была такая же проблема с использованием Docker для Mac, но docker ps -a не показывал никаких запущенных контейнеров. Запуск docker images показывает:

docker/desktop-storage-provisioner   v1.0                605a0f683b7b        2 months ago        33.1MB
k8s.gcr.io/kube-controller-manager   v1.15.5             1399a72fa1a9        6 months ago        159MB
k8s.gcr.io/kube-proxy                v1.15.5             cbd7f21fec99        6 months ago        82.4MB
k8s.gcr.io/kube-apiserver            v1.15.5             e534b1952a0d        6 months ago        207MB
k8s.gcr.io/kube-scheduler            v1.15.5             fab2dded59dd        6 months ago        81.1MB
docker/kube-compose-controller       v0.4.23             a8c3d87a58e7        11 months ago       35.3MB
docker/kube-compose-api-server       v0.4.23             f3591b2cb223        11 months ago       49.9MB
k8s.gcr.io/coredns                   1.3.1               eb516548c180        16 months ago       40.3MB
k8s.gcr.io/etcd                      3.3.10              2c4adeb21b4f        17 months ago       258MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

Все эти образы используются приложением Docker, если у вас включен Kubernetes. В настройках Docker для Mac есть раздел для Kubernetes. Если вы нажмете «Показать системные контейнеры (дополнительно)», они появятся в docker ps.

Если вы хотите удалить эти изображения, вам нужно отключить Kubernetes через приложение Docker для Mac, а затем повторить попытку.

Если docker rmi <image-id> не сработал, попробуйте следующее:

Остановить все запущенные контейнеры

docker stop $(docker ps -aq)

Удалить все контейнеры

docker rm $(docker ps -aq)

Удалить все изображения

docker rmi $(docker images -q)

Если цель состоит в том, чтобы освободить место на диске, можно использовать еще один не упомянутый подход - использовать 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

Это не приведет к удалению именованных изображений, но очистит промежуточные безымянные изображения. В зависимости от размеров используемых контейнеров это может сэкономить значительный объем дискового пространства.

Другие вопросы по теме