Поиск по сайту:

Объяснение томов Docker на примерах

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

Если вы еще не знакомы с основами Docker, обратитесь к следующему руководству:

  • Начало работы с Docker

Зачем нам нужны тома для Docker?

  • При удалении контейнеров тома не удаляются.
  • Прикрепите или отсоедините том к контейнерам.
  • Разделяйте тома (хранилище/данные) между разными контейнерами.
  • Отсоединение контейнеров от места хранения.
  • Храните том на удаленном хосте или в облаке.

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

Начало работы с томами Docker

Команда docker Volume отобразит подробную информацию о командах тома, с помощью которых мы можем создать том, просмотреть подробные данные тома, составить список доступных томов и удалить тома.

docker volume

Отобразить раздел справки по команде «docker Volume»

Создание томов Docker

Синтаксис создания тома докера:

docker volume create <volume_name>

Пример :

docker volume create devops_volume

Приведенная выше команда создаст том Docker с именем devops_volume.

создать том докера

Перечисление томов докера

Чтобы просмотреть все созданные тома Docker, запустите:

docker volume ls

список томов докера

Проверка томов докера

Команда docker Volume Inspect предоставит вам подробную информацию о создании тома, его местоположении, имени и области действия.

Синтаксис:

docker volume inspect <volume_name>

Позвольте мне показать вам подробную информацию о томе докера с именем devops_volume.

docker volume inspect devops_volume

проверить тома докера

Создание контейнеров с прикрепленным к ним томом

Синтаксис:

docker container create --name <container_name> -it --mount source<volume_name>,target=/<folder_Name> <image_name>

Пример :

docker container create --name myBusyBox1 -it --mount source=devops_volume,target=/app busybox

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

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

Вывод команды «docker ps»

Запуск контейнеров

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

docker container start myBusyBox1

запустить докер-контейнеры

Как вы видите на скриншоте выше, контейнер myBusyBox1 был создан 8 минут назад и запущен 6 секунд назад.

Копирование файлов между контейнерами из общего тома

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

Мы уже создали контейнер с именем myBusyBox1. Давайте создадим еще один, например myBusyBox2.

создать контейнер

Теперь у нас есть два работающих контейнера: myBusyBox1 и myBusyBox2.

Давайте подключимся к первому контейнеру и создадим файл в папке /app .

docker exec -it myBusyBox1 sh

Команда выше приведет вас внутрь контейнера.

Затем создайте новую папку с именем devops внутри папки /app и выйдите из первого контейнера.

подключиться к первому контейнеру

Теперь скопируйте файл, например index.html, из локальной системы в папку /app/devops/ контейнера myBusyBox1.

docker container cp index.html myBusyBox1:/app/Devops

Теперь подключитесь к другому второму контейнеру, например, myBusyBox2, и убедитесь, что внутри папки /app/devops файл index.html присутствует или нет.

docker exec -it myBusyBox2 sh

подключиться ко второму контейнеру

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

Мы можем проверить расположение точки монтирования тома с помощью команды docker Volume Inspect, как показано ниже:

docker volume inspect devops_volume

команда проверки тома в docker

Как вы видите, местоположение точки монтирования — /var/lib/docker/volumes/devops_volume/_data.

Давайте перейдем к точке монтирования и посмотрим, доступен ли скопированный файл или нет.

точка монтирования томов Docker

В расположении точки монтирования мы нашли тот же файл.

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

Синтаксис удаления тома:

docker volume rm <volume_name>

Давайте удалим том с именем devops_volume.

docker volume rm devops_volume

удалить том докера

На снимке экрана выше мы пытаемся удалить том, но не можем удалить, поскольку том уже используется. Итак, во-первых, нам нужно убить контейнер и освободить том. И тогда мы сможем удалить том.

Для этого сначала удалите все запущенные контейнеры с помощью команды:

docker rm -f $(docker ps -aq)

А затем удалите громкость:

docker volume rm devops_volume

удалить тома докера

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

Используя команду docker rm, мы можем удалить один том за раз. Если у нас несколько томов и мы хотим удалить все тома, нам нужно использовать команду prune.

Создадим несколько томов:

создавать тома докера

Теперь удалите все тома докера одновременно с помощью команды:

docker volume prune

удалить все тома докера сразу

Видеть? Мы удалили все тома за один раз.

Рекомендуем прочитать:

  • Объяснение концепций сети Docker
  • Как автоматически обновлять работающие контейнеры Docker
  • ctop — инструмент мониторинга командной строки для контейнеров Linux
  • Portainer - самый простой способ управления Docker
  • PiCluster — простое веб-приложение для управления Docker
  • Dockly - управление контейнерами Docker из терминала

Об авторе:

Дхрув Тивари — инженер DevOps, который любит автоматизировать процессы, работать с Linux в больших масштабах и мечтает о том дне, когда системы станут достаточно умными, чтобы им никогда не приходилось входить в систему Linux. Путешествие CI/CD от исходного кода до развертывания кода в производство.

Статьи по данной тематике