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.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ