Ошибка удаления образа в Docker: image is used by stopped container
В процессе своего знакомства с Docker я создал большое количество образов и контейнеров на сервере, и когда, так скажем, необходимые пробы были позади, пришло время удалить всё ненужное. На самом деле, этот пункт может быть для кого-то не очень важным, но я люблю порядок в проектах.
Так, однажды, удаляя очередной ненужный мне образ с помощью команды:
docker rmi IMAGE_ID
я столкнулся со следующей ошибкой:
Error response from daemon: conflict: unable to delete 975fe4b9f798 (must be forced) - image is being used by stopped container d593ff0d57b
Визуально она выглядит так:
Если перевести её, то получим следующую суть:
Образ используется остановленным контейнером d593ff0d57b
Это означает, что у меня (и у вас) есть остановленный контейнер, который использует удаляемый образ.
Чтобы понять, что же за контейнер препятствует удалению образа Docker введите команду (напомню, что все команды я ввожу по SSH и использую для этого программу PuTTY):
docker ps -a
Флаг «-a» позволит вывести все имеющиеся контейнеры, в том числе остановленные. Найти нужный по ранее выданному в ошибке ID не должно составить труда.
Хорошо, с контейнером мы разобрались, что дальше?
Здесь я предлагаю вам два варианта решения (удаления нужного образа). Первый (быстрый) – это запустить команду:
docker rmi -f IMAGE_ID
Здесь IMAGE_ID – ID вашего образа (думаю, вы его знаете, раз столкнулись с этой ошибкой).
Если всё же эту информацию нужно обновить (вспомнить) – воспользуйтесь командой:
docker image list
Она выведет имеющиеся на вашем сервере образы.
Флаг «-f» в команде выше (или «--force») позволяет принудительно удалить образ, минуя тем самым описанную ранее ошибку.
Контейнер при таком удалении образа остаётся. Его, по необходимости, вы удаляете отдельно.
Второй вариант чуть длинней, но не менее сложный. Для начала вам нужно удалить ваш остановленный контейнер командой:
docker rm CONTAINER_ID
CONTAINER_ID не забудьте заменить на ID нужного контейнера.
И уже после удаляете образ командой из начала этого поста:docker rmi IMAGE_ID
Надеюсь, это помогло без особого труда решить подобную проблему на вашем проекте.