Объяснение томов 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 от исходного кода до развертывания кода в производство.