Как использовать команду docker volume ls для перечисления и фильтрации томов

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь эффективно использовать команду docker volume ls для управления Docker-томами (Docker volumes). Мы начнем с создания примеров томов для работы. Затем вы узнаете, как вывести список всех существующих томов в вашей системе.

Построив на навыке вывода списка, вы изучите, как фильтровать тома по таким критериям, как имя и драйвер, а также по их "висящему" (dangling) состоянию. Наконец, вы научитесь форматировать вывод команды docker volume ls для лучшей читаемости и извлечения конкретной информации.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") subgraph Lab Skills docker/ls -.-> lab-555260{{"Как использовать команду docker volume ls для перечисления и фильтрации томов"}} docker/rm -.-> lab-555260{{"Как использовать команду docker volume ls для перечисления и фильтрации томов"}} docker/create -.-> lab-555260{{"Как использовать команду docker volume ls для перечисления и фильтрации томов"}} docker/volume -.-> lab-555260{{"Как использовать команду docker volume ls для перечисления и фильтрации томов"}} end

Создание примеров томов

На этом этапе мы научимся создавать Docker-тома (Docker volumes). Тома представляют собой предпочтительный способ сохранения данных, которые создаются и используются Docker-контейнерами. В то время как привязанные монтировки (bind mounts) зависят от структуры каталогов хост-машины, тома полностью управляются Docker.

Для создания тома мы используем команду docker volume create. Создадим простой том с именем myvolume.

docker volume create myvolume

Если создание прошло успешно, вы должны увидеть имя тома, выведенное в консоль.

Теперь создадим еще один том с именем another_volume.

docker volume create another_volume

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

Вывод списка всех томов

На этом этапе мы научимся выводить список всех Docker-томов (Docker volumes), существующих в нашей системе. Это полезно для просмотра доступных томов и их управления.

Для вывода списка всех томов мы используем команду docker volume ls. Эта команда покажет вам список всех томов, включая их драйвер и имя.

docker volume ls

В выводе вы должны увидеть тома, которые мы создали на предыдущем этапе (myvolume и another_volume), а также любые другие тома, которые могут существовать в системе. Вывод обычно включает столбцы DRIVER и VOLUME NAME.

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

Фильтрация томов по имени и драйверу

На этом этапе мы научимся фильтровать список Docker-томов (Docker volumes) по их имени и драйверу. Это полезно, когда у вас есть много томов и вы хотите найти определенные из них.

Мы можем использовать флаг --filter с командой docker volume ls для фильтрации вывода. Фильтр принимает пару ключ=значение.

Для фильтрации по имени мы используем ключ name. Отфильтруем том с именем myvolume.

docker volume ls --filter name=myvolume

В выводе вы должны увидеть только myvolume.

Теперь отфильтруем по драйверу. Поскольку мы использовали драйвер по умолчанию при создании томов, драйвером является local. Отфильтруем тома, использующие драйвер local.

docker volume ls --filter driver=local

Эта команда должна вывести все тома, использующие драйвер local, которые должны включать как myvolume, так и another_volume.

Вы также можете комбинировать фильтры. Например, чтобы отфильтровать том с именем myvolume, использующий драйвер local, вы можете использовать:

docker volume ls --filter name=myvolume --filter driver=local

Эта команда снова покажет только myvolume.

Фильтрация томов по статусу "висячего" (dangling)

На этом этапе мы научимся фильтровать Docker-тома (Docker volumes) по их статусу "висячего" (dangling). Висящий том - это том, который в данный момент не подключен ни к одному контейнеру. Эти тома могут бесполезно расходовать дисковое пространство.

Для фильтрации висящих томов мы используем флаг --filter dangling=true.

Сначала создадим контейнер и подключим один из наших томов к нему. Мы будем использовать образ ubuntu. Если у вас нет образа ubuntu локально, Docker автоматически загрузит его.

docker run -d --name mycontainer -v myvolume:/app ubuntu sleep 3600

Эта команда запускает контейнер с именем mycontainer в отсоединенном режиме (-d), монтирует том myvolume в каталог /app внутри контейнера (-v myvolume:/app), использует образ ubuntu и держит контейнер запущенным на протяжении часа (sleep 3600).

Теперь выведем список всех томов еще раз:

docker volume ls

Вы увидите как myvolume, так и another_volume. Т том myvolume в данный момент используется контейнером mycontainer. Т том another_volume не подключен ни к какому контейнеру, поэтому он является висящим томом.

Теперь отфильтруем висящие тома:

docker volume ls --filter dangling=true

В выводе вы должны увидеть another_volume, так как он не подключен ни к какому запущенному контейнеру.

Для просмотра томов, которые не являются висящими (то есть подключены к контейнеру), вы можете использовать --filter dangling=false.

docker volume ls --filter dangling=false

В этом случае должен быть показан том myvolume.

Наконец, остановим и удалим созданный нами контейнер.

docker stop mycontainer
docker rm mycontainer

Теперь, если вы снова выведете список висящих томов:

docker volume ls --filter dangling=true

Теперь должны появиться оба тома myvolume и another_volume как висящие, так как myvolume больше не подключен к контейнеру.

Форматирование вывода информации о томах

На этом этапе мы научимся форматировать вывод команды docker volume ls. Это позволяет нам настраивать отображаемую информацию и представлять ее в наиболее удобной для нас форме.

Мы можем использовать флаг --format для указания формата вывода. Этот флаг принимает синтаксис шаблонов Go.

Выведем список томов и отобразим только имена томов. Для этого можно использовать шаблон {{.Name}}.

docker volume ls --format "{{.Name}}"

Эта команда выведет список имен томов, по одному на строку.

Теперь отобразим как драйвер, так и имя тома, разделенные двоеточием. Можно использовать {{.Driver}}:{{.Name}}.

docker volume ls --format "{{.Driver}}:{{.Name}}"

В выводе будет показан драйвер и имя каждого тома, например local:myvolume.

Мы также можем использовать формат table для отображения вывода в более удобочитаемой табличной форме, аналогичной стандартному выводу, но с большим контролем над столбцами. Выведем драйвер и имя тома в таблице.

docker volume ls --format "table {{.Driver}}\t{{.Name}}"

Символ \t используется для создания табуляции между столбцами. Вывод будет представлен в виде таблицы с заголовками "DRIVER" и "NAME".

Наконец, очистим тома, созданные нами в рамках этого практического занятия. Можно удалить их с помощью команды docker volume rm.

docker volume rm myvolume another_volume

Вы должны увидеть подтверждение удаления томов.

Резюме

В этом практическом занятии мы научились управлять Docker-томами (Docker volumes) с помощью команды docker volume ls. Мы начали с создания примеров томов с использованием команды docker volume create. Затем мы изучили, как вывести список всех существующих томов в системе с помощью команды docker volume ls.

Кроме того, мы углубился в процесс фильтрации томов для поиска конкретных из них. Мы научились фильтровать тома по имени и драйверу, используя флаг --filter с ключами name и driver. В рамках практического занятия также было рассмотрено фильтрование томов по их статусу "висячего" (dangling) и форматирование вывода команды docker volume ls для улучшения читаемости.