Введение
В этом практическом занятии (лабораторной работе) вы научитесь эффективно использовать команду docker volume ls для управления Docker-томами (Docker volumes). Мы начнем с создания примеров томов для работы. Затем вы узнаете, как вывести список всех существующих томов в вашей системе.
Построив на навыке вывода списка, вы изучите, как фильтровать тома по таким критериям, как имя и драйвер, а также по их "висящему" (dangling) состоянию. Наконец, вы научитесь форматировать вывод команды docker volume ls для лучшей читаемости и извлечения конкретной информации.
Создание примеров томов
На этом этапе мы научимся создавать 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 для улучшения читаемости.



