Подробная инструкция по работе с томами (volumes) в Docker

Оцените статью

В данной инструкции мы рассмотрим основные операции, связанные с использованием томов (volumes) в Docker — от создания и подключения до их удаления.

Что такое volume?

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

  • Они создаются и управляются непосредственно самим Docker’ом;
  • Хранятся отдельно от файловой системы хост-машины;
  • Данные сохраняются даже после уничтожения или перезапуска контейнеров;
  • Могут быть совместно использованы несколькими контейнерами одновременно.

Основные команды работы с томами

  1. Создание нового тома
    Чтобы создать новый том, используйте команду docker volume create:
   # docker volume create my_volume

Здесь «my_volume» – имя создаваемого тома.

  1. Просмотр списка существующих томов
    Для просмотра всех созданных томов используется команда:
   # docker volume ls
  1. Получение подробной информации о конкретном томе
    Если нужно узнать детали конкретного тома (например, путь на хосте), выполните следующую команду:
   # docker volume inspect my_volume
  1. Подключение тома к контейнеру при запуске
    Когда вы создаете или запускаете контейнер, можно указать подключение тома через опцию —mount. Например:
   # docker run -d --name my_container --mount source=my_volume,target=/app nginx

Или используя более старый синтаксис (-v) без дополнительных параметров:

   # docker run -d --name my_container -v my_volume:/app nginx
  1. Использование анонимных томов
    Анонимные тома автоматически генерируются при использовании опции -v, если не указан явно источник:
   # docker run -d --name my_container -v /app nginx

Однако этот подход менее предпочтителен из-за сложности управления такими томами.

  1. Удаление тома
    Удалить ненужный том можно командой:
   # docker volume rm my_volume
  1. Автоматическое удаление тома при удалении контейнера
    По умолчанию томы остаются после удаления контейнера. Но есть возможность удалить связанный том вместе с контейнером, добавив флаг —rm при создании контейнера и указав тип тома как временное хранилище:
   # docker run -d --name my_container --rm --mount type=tmpfs,destination=/app nginx
  1. Копирование файлов между хостом и томом
    При необходимости скопировать файлы внутрь тома можно использовать два подхода:
  • Подключив контейнер к тому и выполнив копирование изнутри контейнера:
    # docker exec -it my_container bash cp /path/to/file /app/ exit
  • Через утилиту docker cp напрямую:
    # docker cp ./local_file.txt my_container:/app/
  1. Обновление конфигурации подключенных томов
    Иногда может понадобиться изменить параметры уже существующего тома. Прямо поменять нельзя, но можно сделать это следующим образом:
  • Остановить контейнер, который использует том:
    # docker stop my_container
  • Создать копию того же объема под другим именем и подключить его к контейнеру вместо старого тома:
    # docker volume create new_my_volume # Перезапустить контейнер с новым томом
    # docker start -a --mount source=new_my_volume,target=/app my_container
  1. Проверка использования пространства тома
    Можно проверить сколько места занимает конкретный том:
    # df -h | grep <путь_тома>
    Путь тома можно получить командой inspect.

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

Похожие записи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования