JavaRush /Курсы /Модуль 2: Fullstack /Основы хранения данных в Docker

Основы хранения данных в Docker

Модуль 2: Fullstack
16 уровень , 0 лекция
Открыта

1.1 Тома (Volumes)

Хранение данных в Docker является важной частью работы с контейнерами. Контейнеры сами по себе являются эфемерными, что означает, что данные внутри них будут потеряны после остановки или удаления контейнера. Для сохранения данных между запусками и обеспечения их долговременного хранения Docker предоставляет две основные технологии: тома (volumes) и привязанные директории (bind mounts).

Тома (Volumes)

Тома — это ресурсы, управляемые Docker, для хранения данных. Они существуют независимо от жизненного цикла контейнеров, что позволяет использовать их для долговременного хранения данных. Тома могут быть созданы и управляться Docker, что обеспечивает удобный способ хранения данных вне контейнеров.

Преимущества использования томов

  1. Изолированность от хоста: тома хранятся в специальной директории на хосте, управляемой Docker, что обеспечивает их изолированность.
  2. Легкость управления: Docker предоставляет удобные команды для создания, удаления и управления томами.
  3. Совместимость и переносимость: тома можно легко перемещать между различными хостами и использовать с различными контейнерами.

Пример создания и использования томов

Создание тома:

Terminal

docker volume create my_volume

Использование тома в контейнере:

В этом примере том my_volume монтируется в директорию /data внутри контейнера my_container.

Terminal

docker run -d --name my_container -v my_volume:/data nginx

1.2 Привязанные директории (Bind Mounts)

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

Преимущества использования привязанных директорий:

  1. Прямой доступ к файлам хоста: контейнеры могут напрямую использовать файлы и директории, находящиеся на хосте.
  2. Удобство разработки: разработчики могут легко изменять файлы на хосте и видеть эти изменения в контейнерах в реальном времени.
  3. Гибкость: привязанные директории могут быть любыми директориями на хосте, предоставляя большую гибкость в управлении данными.

Пример использования привязанных директорий

Запуск контейнера с привязанной директорией:

Terminal

docker run -d --name my_container -v /path/on/host:/data nginx

В этом примере директория /path/on/host на хосте монтируется в директорию /data внутри контейнера my_container.

Сравнение томов и привязанных директорий:

Характеристика Тома Привязанные директории
Хранение данных Управляется Docker Управляется пользователем
Изолированность Изолированы от файловой системы хоста Используют файловую систему хоста
Производительность Оптимизировано для Docker Зависит от файловой системы хоста
Применимость Долговременное хранение данных Разработка и тестирование

1.3 Практические примеры

Практические примеры использования

Пример 1: Использование томов для базы данных

Для обеспечения долговременного хранения данных базы данных можно использовать тома.

Создание тома:

Terminal

docker volume create db_data

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

Terminal

docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v 
db_data:/var/lib/postgresql/data postgres

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

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

Запуск контейнера с привязанной директорией:

Terminal

docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx

В этом примере текущая рабочая директория my_website монтируется в директорию /usr/share/nginx/html контейнера nginx.

3
Задача
Модуль 2: Fullstack, 16 уровень, 0 лекция
Недоступна
Создание тома для хранения данных
Создание тома для хранения данных
3
Задача
Модуль 2: Fullstack, 16 уровень, 0 лекция
Недоступна
Использование привязанной директории для разработки
Использование привязанной директории для разработки
3
Задача
Модуль 2: Fullstack, 16 уровень, 0 лекция
Недоступна
Хранение данных базы данных в томе
Хранение данных базы данных в томе
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 64
10 октября 2025
По-моему это повтор лекции...