Удаление образа по идентификатору с использованием принудительного режима
На этом этапе мы узнаем, как удалить Docker-образ по его идентификатору (Image ID), а также, как использовать опцию принудительного удаления (-f
или --force
), если это необходимо. Удаление по идентификатору полезно, когда вы хотите точно указать, какой образ вы удаляете, особенно если несколько тегов ссылаются на один и тот же образ.
Сначала давайте загрузим образ, который мы затем удалим по идентификатору. Мы будем использовать образ ubuntu
. Если у вас он уже есть, загрузка будет быстрой.
docker pull ubuntu
Теперь выведите список образов, чтобы получить идентификатор образа ubuntu
.
docker images
Найдите образ ubuntu
в выводе и запишите его IMAGE ID
. Это будет длинная строка шестнадцатеричных символов. Вам нужно только первые несколько символов (обычно 3 или больше), чтобы уникально идентифицировать образ.
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 270000000000 2 weeks ago 77.8MB
Сначала попробуем удалить образ по его идентификатору без использования опции принудительного удаления. Замените YOUR_IMAGE_ID
на фактический идентификатор образа, который вы записали из вывода команды docker images
.
docker rmi YOUR_IMAGE_ID
Если образ не используется никакими запущенными или остановленными контейнерами, эта команда, скорее всего, выполнится успешно и удалит образ. Однако, если есть контейнер, основанный на этом образе, вы получите сообщение об ошибке, указывающее, что образ используется контейнером и не может быть удален.
Чтобы продемонстрировать использование опции принудительного удаления, сначала запустим контейнер на основе образа ubuntu
.
docker run -d ubuntu sleep 3600
Эта команда запускает контейнер Ubuntu в отсоединенном режиме (-d
) и держит его запущенным на протяжении часа (sleep 3600
).
Теперь попробуйте снова удалить образ ubuntu
по его идентификатору без опции принудительного удаления.
docker rmi YOUR_IMAGE_ID
Вы должны получить сообщение об ошибке, похожее на следующее:
Error response from daemon: conflict: unable to remove repository reference "ubuntu:latest" (must force) - image is referenced by one or more containers: 000000000000 (created ...)
Эта ошибка возникает, потому что контейнер использует образ. Чтобы удалить образ, который используется контейнером, вам нужно использовать опцию принудительного удаления (-f
).
Теперь давайте удалим образ по его идентификатору с использованием опции принудительного удаления. Замените YOUR_IMAGE_ID
на фактический идентификатор образа.
docker rmi -f YOUR_IMAGE_ID
Опция принудительного удаления сообщает Docker удалить образ, даже если он используется контейнером. Docker сначала остановит и удалит все контейнеры, которые используют этот образ, а затем удалит сам образ. В выводе будет показано, что образ и его слои были удалены.
Untagged: ubuntu:latest
Deleted: sha256:2700000000000000000000000000000000000000000000000000000000000000
Deleted: sha256:0000000000000000000000000000000000000000000000000000000000000000
... (более строк с пометкой Deleted)
Выведите список образов снова, чтобы убедиться, что образ ubuntu
удален.
docker images
Образ ubuntu
больше не должен быть в списке.
Использовать опцию принудительного удаления нужно с осторожностью, так как она остановит и удалит контейнеры без дополнительного подтверждения.