Android

Как удалить Docker-контейнеры, образы, тома и сети

Máy triệt lông CANZY mới nhất 2018 .

Máy triệt lông CANZY mới nhất 2018 .

Оглавление:

Anonim

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

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

Это руководство служит «шпаргалкой», помогающей пользователям Docker организовать свою систему и освободить дисковое пространство, удалив неиспользуемые контейнеры Docker, образы, тома и сети.

Удаление всех неиспользуемых объектов

Команда удаления docker system prune удалит все остановленные контейнеры, все висячие образы и все неиспользуемые сети:

docker system prune

Вам будет предложено продолжить, используйте флаг -f или --force чтобы пропустить приглашение.

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cache Are you sure you want to continue?

docker system prune --volumes

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all volumes not used by at least one container - all dangling images - all build cache Are you sure you want to continue? y

Удаление контейнеров Docker

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

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

Чтобы удалить одно или несколько образов Docker, используйте команду docker container rm а затем идентификатор контейнеров, которые вы хотите удалить.

Вы можете получить список всех контейнеров, передав флаг -a команде docker container ls :

docker container ls -a

Вывод должен выглядеть примерно так:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cc3f2ff51cab centos "/bin/bash" 2 months ago Created competent_nightingale cd20b396a061 solita/ubuntu-systemd "/bin/bash -c 'exec …" 2 months ago Exited (137) 2 months ago systemd fb62432cf3c1 ubuntu "/bin/bash" 3 months ago Exited (130) 3 months ago jolly_mirzakhani

Как только вы узнаете CONTAINER ID для контейнеров, которые хотите удалить, передайте его команде docker container rm . Например, чтобы удалить первые два контейнера, перечисленные в выводе выше, выполните:

docker container rm cc3f2ff51cab cd20b396a061

Error response from daemon: You cannot remove a running container fc983ebf4771d42a8bd0029df061cb74dc12cb174530b2036987575b83442b47. Stop the container before attempting removal or force remove.

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

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

docker container ls -a --filter status=exited --filter status=created

Чтобы удалить все остановленные контейнеры, используйте команду docker container prune :

docker container prune

Вам будет предложено продолжить, используйте флаг -f или --force чтобы пропустить приглашение.

WARNING! This will remove all stopped containers. Are you sure you want to continue? y

Удалить контейнеры с помощью фильтров

Команда docker container prune позволяет вам удалять контейнеры в зависимости от условия, используя флаг фильтрации --filter .

На момент написания этой статьи в настоящее время поддерживаются фильтры until label . Вы можете использовать более одного фильтра, используя несколько флагов --filter .

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

docker container prune --filter "until=12h"

Остановите и удалите все контейнеры

Вы можете получить список всех контейнеров Docker в вашей системе, используя команду docker container ls -aq .

Чтобы остановить все запущенные контейнеры, используйте команду docker container stop а затем список идентификаторов всех контейнеров.

docker container stop $(docker container ls -aq)

Когда все контейнеры остановлены, вы можете удалить их с помощью команды docker container rm за которой следует список идентификаторов контейнеров.

docker container rm $(docker container ls -aq)

Удаление изображений Docker

Удалить одно или несколько изображений

Чтобы удалить одно или несколько изображений Docker, используйте команду docker images ls чтобы найти идентификатор изображений, которые вы хотите удалить.

docker image ls

Вывод должен выглядеть примерно так:

REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 75835a67d134 7 days ago 200MB ubuntu latest 2a4cca5ac898 2 months ago 111MB linuxize/fedora latest a45d6dca3361 3 months ago 311MB java 8-jre e44d62cf8862 3 months ago 311MB

Как только вы найдете изображения, которые хотите удалить, передайте их IMAGE ID команде docker image rm . Например, чтобы удалить первые два изображения, перечисленные в выводе выше, выполните:

docker image rm 75835a67d134 2a4cca5ac898

Error response from daemon: conflict: unable to remove repository reference "centos" (must force) - container cd20b396a061 is using its referenced image 75835a67d134

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

Docker предоставляет команду удаления docker image prune которая может использоваться для удаления зависших и неиспользуемых изображений.

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

docker image prune

Вам будет предложено продолжить, используйте флаг -f или --force чтобы пропустить приглашение.

WARNING! This will remove all dangling images. Are you sure you want to continue? y При удалении висячих изображений, если созданные вами изображения не помечены, они также будут удалены.

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

Чтобы удалить все изображения, на которые не ссылается ни один из существующих контейнеров, а не только свисающие, используйте команду prune с флагом -a :

docker image prune -a

WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? y

Удалить изображения с помощью фильтров

С помощью команды docker image prune вы также можете удалить изображения, основанные на определенных условиях, используя флаг фильтрации --filter .

На момент написания этой статьи в настоящее время поддерживаются фильтры until label . Вы можете использовать более одного фильтра, используя несколько флагов --filter .

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

docker image prune -a --filter "until=12h"

Удаление томов Docker

Удалить один или несколько томов

Чтобы удалить один или несколько томов Docker, используйте команду docker volume ls чтобы найти идентификатор томов, которые вы хотите удалить.

docker volume ls

Вывод должен выглядеть примерно так:

DRIVER VOLUME NAME local 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163 local terano

Когда вы найдете VOLUME NAME томов, которые хотите удалить, передайте их команде docker volume rm . Например, чтобы удалить первый том, указанный в выводе выше, выполните:

docker volume rm 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163

Error response from daemon: remove 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163: volume is in use -

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

Чтобы удалить все неиспользуемые тома, используйте команду docker image prune :

docker volume prune

Вам будет предложено продолжить, используйте флаг -f или --force чтобы пропустить приглашение.

WARNING! This will remove all local volumes not used by at least one container. Are you sure you want to continue?

Удаление Docker Networks

Удалить одну или несколько сетей

Чтобы удалить одну или несколько сетей Docker, используйте команду docker network ls чтобы найти идентификатор сетей, которые вы хотите удалить.

docker network ls

Вывод должен выглядеть примерно так:

NETWORK ID NAME DRIVER SCOPE 107b8ac977e3 bridge bridge local ab998267377d host host local c520032c3d31 my-bridge-network bridge local 9bc81b63f740 none null local

Найдя сети, которые вы хотите удалить, передайте их NETWORK ID команде docker network rm . Например, чтобы удалить сеть с именем my-bridge-network запустите:

docker network rm c520032c3d31

Error response from daemon: network my-bridge-network id 6f5293268bb91ad2498b38b0bca970083af87237784017be24ea208d2233c5aa has active endpoints

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

Используйте команду docker network prune чтобы удалить все неиспользуемые сети.

docker network prune

Вам будет предложено продолжить, используйте флаг -f или --force чтобы пропустить приглашение.

WARNING! This will remove all networks not used by at least one container. Are you sure you want to continue?

Удалить сети с помощью фильтров

С помощью команды docker network prune вы можете удалять сети в зависимости от состояния, используя флаг фильтрации --filter .

На момент написания этой статьи в настоящее время поддерживаются фильтры until label . Вы можете использовать более одного фильтра, используя несколько флагов --filter .

Например, чтобы удалить все сети, созданные более 12 часов назад, выполните:

docker network prune -a --filter "until=12h"

Вывод

В этом руководстве мы показали вам некоторые общие команды для удаления контейнеров Docker, изображений, томов и сетей.

Вам также следует ознакомиться с официальной документацией Docker.

докер