3.1 Основы монтирования томов
Монтирование томов (volumes) в контейнеры — это одна из ключевых функций Docker, которая позволяет сохранять данные вне контейнеров, обеспечивая их долговременное хранение и доступность. Тома могут быть использованы для различных целей, включая хранение конфигурационных файлов, баз данных, логов и других важных данных. В этой лекции мы рассмотрим, как монтировать тома в контейнеры, и приведем практические примеры.
Основы монтирования томов
Тома, как мы уже говорили, существуют независимо от жизненного цикла контейнеров. Они хранятся в специальной директории на хостовой машине и могут быть подключены к любому контейнеру.
Команда для монтирования томов
Тома монтируются в контейнеры с помощью параметров -v или --mount при запуске контейнера.
3.2 Параметр -v
Примеры использования параметра -v
1. Монтирование тома в контейнер
Создание тома и его монтирование в контейнер:
Создание тома:
docker volume create my_volume
Запуск контейнера с монтированием тома:
docker run -d --name my_container -v my_volume:/app nginx
В этом примере том my_volume монтируется в директорию /app контейнера my_container
2. Монтирование нескольких томов
Вы можете монтировать несколько томов в один контейнер:
docker run -d --name my_container -v volume1:/app/data -v volume2:/app/logs nginx
В этом примере том volume1 монтируется в директорию /app/data, а том volume2 — в директорию /app/logs.
3.3 Параметр --mount
Параметр --mount предоставляет более детализированный способ монтирования томов, с возможностью указания различных параметров.
1. Монтирование тома с использованием --mount
docker run -d --name my_container --mount source=my_volume,target=/app nginx
Этот пример аналогичен предыдущему примеру с -v, но использует более подробный синтаксис.
2. Монтирование с дополнительными параметрами
docker run -d --name my_container --mount source=my_volume,target=/app,readonly nginx
В этом примере том монтируется в режиме только для чтения (readonly).
3.4 Практические примеры
Пример 1: Использование томов для базы данных
Создание и использование тома для хранения данных базы данных.
Создание тома:
docker volume create db_data
Запуск контейнера базы данных с монтированием тома:
docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v
db_data:/var/lib/postgresql/data postgres
В этом примере данные базы данных PostgreSQL сохраняются в томе db_data.
Пример 2: Использование томов для конфигурационных файлов
Создание тома для хранения конфигурационных файлов и монтирование его в контейнер.
Создание тома:
docker volume create config_data
Копирование конфигурационных файлов в том:
docker run --rm -v config_data:/app busybox sh -c "echo 'configuration data' > /app/config.txt"
Запуск контейнера с использованием тома для конфигурационных файлов:
docker run -d --name my_app -v config_data:/app/config nginx
В этом примере конфигурационные файлы хранятся в томе config_data, который монтируется в директорию /app/config контейнера.
Пример 3: Логи контейнера
Создание тома для хранения логов контейнера и монтирование его в контейнер.
Создание тома:
docker volume create logs_data
Запуск контейнера с монтированием тома для логов:
docker run -d --name my_app -v logs_data:/var/log/nginx nginx
В этом примере логи Nginx сохраняются в томе logs_data.
3.5 Проверка содержимого томов
Вы можете проверить содержимое тома, смонтировав его во временный контейнер.
Пример
Запуск временного контейнера с монтированием тома:
docker run --rm -v my_volume:/app busybox ls /app
Этот пример покажет содержимое тома my_volume.
Удаление томов
Удаление тома, который больше не используется.
Пример
Удаление тома:
docker volume rm my_volume
Если том используется контейнером, Docker выдаст ошибку. Убедитесь, что контейнеры, использующие том, остановлены и удалены
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ