Введение
В этой статье описывается, как удалять объекты, изображения, контейнеры, тома и сети в Docker. Мы подробно объясним, как использовать опции команды Docker rm
и другие полезные команды, которые сложно понять только из официальной документации. Если вы новичок в Docker, обратитесь к этой статье как к памятке.
Удаление всех неиспользуемых или висящих образов, контейнеров, томов и сетей
Вы когда-нибудь хотели избавиться от ненужных вещей с помощью Docker? Если вы хотите удалить объект Docker, это часто бывает. В этом случае действует команда Docker prune
. Команда prune позволяет сразу удалить неиспользуемые объекты Docker (контейнеры, образы, сети, тома). Ниже приведен пример.
docker system prune
В настоящее время с помощью параметра —filter
можно сузить и удалить контейнеры, которые были остановлены в течение длительного времени. Ниже приведен пример удаления контейнера, который был остановлен более 24 часов.
Дополнительную информацию о фильтрации можно найти в следующей официальной документации: https://docs.docker.com/engine/reference/commandline/system_prune/
docker system prune -a --filter "until = 24h"
В это время опция -a
может очистить кеш сборки и промежуточный образ.
Удаление контейнеров Docker
В этом разделе описывается команда для удаления контейнера Docker.
Удаление одного или нескольких контейнеров по идентификатору или имени
При удалении одного контейнера Docker вы можете удалить его, указав идентификатор или имя контейнера. Ниже приведен пример.
docker rm 4c01db0b339c
Вы также можете удалить несколько контейнеров вместе, указав идентификаторы или имена нескольких контейнеров, как показано ниже.
docker rm 4c01db0b339c d7886598dbe2
Удаление всех остановленных контейнеров
Если ваша версия Docker 1.13 или выше, вы можете легко удалить все остановленные контейнеры с помощью команды docker container prune
. Ниже приведен пример.
docker container prune
Удалить контейнер при выходе
Вы используете много временных контейнеров Docker? В этом случае вы можете использовать параметр --rm
из docker run
для автоматического удаления контейнера при его выходе. Его нельзя использовать вместе с опцией -d
(режим отсоединения).
docker run —rm image_name
Остановить и удалить все контейнеры
Следующая команда удобна, если вы хотите остановить/удалить все контейнеры, включая работающий контейнер.
docker stop $ (docker ps -a -q)
docker rm $ (docker ps -a -q)
В этой команде docker ps -a -q
используется для отображения списка идентификаторов всех контейнеров Docker, а docker rm
используется для их удаления.
Удаление образов Docker
Удаление одного или нескольких изображений по id
Используйте команду docker rmi
для удаления образа Docker. Как показано ниже:
docker rmi image_id
Кроме того, поскольку эту команду можно указать несколько раз, например, удаление контейнера, вы можете удалить несколько изображений одновременно, как показано ниже.
docker rmi image_id_1 image_id_2
Удаление изображений по тегу
С помощью команды docker rmi
обычно можно удалить, только указав идентификатор изображения, но вы можете удалить его, выбрав имя тега с помощью параметра -f
.
docker rmi -f tag_name
Удаление висящих изображений
Как и при удалении контейнера, при удалении образа можно быстро удалить все остановленные контейнеры, указав в команде prune
. Ниже приведен пример.
docker image prune
Удаление всех неиспользуемых изображений
С помощью команды docker image prune
вы можете использовать параметр -a
для удаления только неиспользуемых образов из существующих контейнеров.
docker image prune -a
Удаление всех изображений
Чтобы удалить все изображения, независимо от того, используете вы их или нет, введите следующую команду:
docker rmi $ (docker images -a -q)
Он удаляет все изображения, отображая все образы Docker с параметром -a
параметра docker images
и отображая идентификаторы всех изображений с параметром -q
.
Удаление томов Docker
Удаление одного или нескольких томов
Чтобы удалить том, используйте команду docker volume rm
, как показано ниже.
docker volume rm volume_name
Как и при удалении других объектов, возможно многократное удаление.
docker volume rm volume_name1 volume_name2
В настоящее время, если ошибка показывает volume is in use
, возможно, контейнер, использующий том, еще не удален. В этом случае вы можете удалить его, удалив соответствующий контейнер Docker.
Удаление всех неиспользуемых томов
Вы можете удалить неиспользуемые тома с помощью команды docker volume prune
.
docker volume prune
—filter
Вы также можете использовать флаг, чтобы ограничить диапазон удалений. Например, следующая команда удаляет только тома с меткой test
.
docker volume prune —filter "label = test"
Удаление сетей Docker
Удаление одной или нескольких сетей по идентификатору или имени
Чтобы удалить сеть Docker, используйте команду docker network rm
. В этом случае укажите либо имя, либо id сети.
docker network rm network_name_or_id
Эта команда также может быть удалена несколько раз и определяется следующим образом.
docker network rm 3695c422697f my-network
Кроме того, если вы укажете несколько сетей, эта команда попытается удалить каждую сеть по очереди. Если удалить одну сеть не удается, перейдите к следующей и попробуйте удалить эту сеть. При каждом удалении сообщается об успехе или неудаче.
Удаление всей неиспользуемой сети
Если вы хотите удалить неиспользуемую сеть, используйте команду docker network prune
, как и любой другой объект.
docker network prune
Вы можете указать диапазон для удаления, используя параметр --filter
. Например, ниже приведен пример удаления только той сети, для которой прошло 24 часа.
docker network prune --filter "until = 24h"
Удаление docker-compose
Наконец, я покажу вам, как удалить объект, созданный docker-compose, если вы хотите очистить среду разработки и воссоздать ее с нуля.
Ниже приведен пример команды для очистки всех контейнеров, образов, томов, сетей и неопределенных контейнеров, созданных с помощью docker-compose.
docker-compose down --rmi all -v --remove-orphans
docker-compose down
является полной противоположностью docker-compose up
. По умолчанию он удаляет созданные объекты, такие как контейнеры и сети. Кроме того, каждый вариант означает следующее.
-- rmi all
Удалить все изображения-v
Удалите именованные тома, объявленные в разделе томов файла docker-compose.yml, и анонимные тома, прикрепленные к контейнеру.--remove-orphans
Удалить контейнеры, не определенные в docker-compose.yml
Таким образом, этот пример команды удаляет контейнеры, образы, тома, сети и неопределенные контейнеры.
Заключение
Я познакомил вас с различными командами удаления Docker. Recent Docker очень удобен тем, что вы можете удалить ненужные объекты с помощью команды prune
. Вы можете узнать больше о представленных командах из официальной документации ниже.
— -
Shisho Cloud защищает вашу инфраструктуру как код всего за несколько кликов.
Вы можете сохранить свою безопасность IaC бесплатно. Кредитная карта не требуется.
(Эта статья перепечатана со следующего URL: https://shisho.dev/blog/posts/docker-remove-cheatsheet/)