docker rm — удалить контейнер и образ Docker

Остановленные контейнеры и неиспользуемые образы занимают место на диске. docker rm удаляет контейнеры, docker rmi — образы, docker system prune — всё сразу.

Вся рубрика Docker: уроки, команды и практические сценарии

docker rm — удалить контейнер

# Удалить остановленный контейнер
docker rm my-nginx

# Удалить по ID (достаточно первых символов)
docker rm abc123

# Удалить работающий контейнер (принудительно, SIGKILL)
docker rm -f my-nginx

# Удалить контейнер вместе с его volumes
docker rm -v my-nginx

# Удалить несколько сразу
docker rm container1 container2 container3

# ⚠️ Нельзя удалить работающий контейнер без -f
# Сначала docker stop, потом docker rm

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

# Современный способ (рекомендуется)
docker container prune

# Без подтверждения
docker container prune -f

# Классический способ через подстановку
docker rm $(docker ps -aq -f status=exited)

# Посмотреть что будет удалено перед prune
docker ps -a -f status=exited

docker rmi — удалить образ

# Удалить образ по имени:тегу
docker rmi nginx:latest

# Удалить по ID
docker rmi abc123def

# Удалить несколько
docker rmi nginx:latest ubuntu:22.04 python:3.12-slim

# Принудительно (даже если есть зависимые контейнеры)
docker rmi -f nginx:latest

# ⚠️ Ошибка "image is being used by stopped container"
# Сначала удалить контейнер: docker rm container_name
# Потом образ: docker rmi image_name

Удалить неиспользуемые образы

# Удалить висячие образы (dangling — без имени и тега, :)
docker image prune

# Удалить ВСЕ неиспользуемые образы (у которых нет контейнеров)
docker image prune -a

# Без подтверждения
docker image prune -a -f

# Посмотреть сколько займёт место до удаления
docker system df

docker system prune — очистить всё сразу

# Удалить:
# - остановленные контейнеры
# - dangling образы (без тега)
# - неиспользуемые сети
docker system prune

# То же + неиспользуемые volumes (ОСТОРОЖНО с данными!)
docker system prune --volumes

# Удалить всё неиспользуемое (включая образы без контейнеров)
docker system prune -a

# Без подтверждения
docker system prune -a -f

# Показать что будет удалено и сколько места освободится
docker system df

Автоудаление контейнера после остановки

# Флаг --rm при запуске — удалить автоматически после exit
docker run --rm ubuntu echo "Привет!"
# Контейнер удалится сам после выполнения команды

# Удобно для одноразовых задач
docker run --rm python:3.12-slim python -c "import sys; print(sys.version)"
docker run --rm -v $(pwd):/data ubuntu ls /data

Полная очистка Docker

# ⚠️ ОСТОРОЖНО: удалит ВСЕ данные Docker!

# Остановить все запущенные контейнеры
docker stop $(docker ps -q)

# Удалить все контейнеры
docker rm $(docker ps -aq)

# Удалить все образы
docker rmi $(docker images -q)

# Удалить все volumes
docker volume prune -f

# Или всё одной командой
docker system prune -a --volumes -f

# Проверить результат
docker system df
# TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
# Images          0         0         0B        0B
# Containers      0         0         0B        0B
# Local Volumes   0         0         0B        0B

Шпаргалка по удалению

Что удалитьКоманда
Один контейнерdocker rm имя
Работающий контейнерdocker rm -f имя
Все остановленныеdocker container prune
Один образdocker rmi имя:тег
Dangling образыdocker image prune
Все неиспользуемые образыdocker image prune -a
Один volumedocker volume rm имя
Все неиспользуемые volumesdocker volume prune
Всё неиспользуемоеdocker system prune
Полная очисткаdocker system prune -a --volumes

Часто задаваемые вопросы

Как удалить все Docker контейнеры одной командой?

Два способа: docker container prune -f — удалит все остановленные контейнеры без подтверждения. docker rm -f $(docker ps -aq) — удалит все контейнеры включая работающие (-f принудительно). Второй вариант опаснее — останавливает и удаляет даже работающие. На сервере осторожно — можно случайно снести что-то важное.

Как удалить образ если он используется контейнером?

Сначала удали контейнер: docker rm -f container_name, потом образ: docker rmi image_name. Если контейнеров несколько — найди все использующие образ: docker ps -a --filter ancestor=image_name. Принудительное удаление образа через docker rmi -f технически возможно, но образ просто потеряет тег — зависимые контейнеры продолжат использовать unlabeled версию.

docker system prune удаляет volumes?

По умолчанию — нет. docker system prune удаляет остановленные контейнеры, dangling образы и неиспользуемые сети. Чтобы включить volumes в очистку — добавь флаг: docker system prune --volumes. ⚠️ Это удалит данные баз данных и другие persistent данные — будь осторожен. Перед очисткой — docker volume ls чтобы увидеть что есть.

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x