1.1 Томи (Volumes)
Зберігання даних в Docker є важливою частиною роботи з контейнерами. Контейнери самі по собі є ефемерними, що означає, що дані всередині них будуть втрачені після зупинки чи видалення контейнера. Для збереження даних між запусками та забезпечення їх довгострокового зберігання Docker надає дві основні технології: томи (volumes) і прив'язані директорії (bind mounts).
Томи (Volumes)
Томи — це ресурси, якими керує Docker, для зберігання даних. Вони існують незалежно від життєвого циклу контейнерів, що дозволяє використовувати їх для довгострокового зберігання даних. Томи можуть бути створені й управлятися Docker, що забезпечує зручний спосіб зберігання даних поза контейнерами.
Переваги використання томів
- Ізольованість від хоста: томи зберігаються в спеціальній директорії на хості, керованій Docker, що забезпечує їх ізольованість.
- Легкість управління: Docker надає зручні команди для створення, видалення та управління томами.
- Сумісність та портативність: томи можна легко переміщувати між різними хостами й використовувати з різними контейнерами.
Приклад створення та використання томів
Створення тома:
docker volume create my_volume
Використання тома в контейнері:
У цьому прикладі том my_volume монтується в директорію /data всередині контейнера my_container.
docker run -d --name my_container -v my_volume:/data nginx
1.2 Прив'язані директорії (Bind Mounts)
Прив'язані директорії дозволяють монтувати певні директорії хоста у контейнери. Це дає змогу контейнерам використовувати файли й директорії, які розташовані на хості, що особливо корисно для розробки й тестування, коли необхідно працювати з локальними файлами.
Переваги використання прив'язаних директорій:
- Прямий доступ до файлів хоста: контейнери можуть безпосередньо використовувати файли й директорії, які знаходяться на хості.
- Зручність розробки: розробники можуть легко змінювати файли на хості й одразу бачити ці зміни у контейнерах.
- Гнучкість: прив'язані директорії можуть бути будь-якими директоріями на хості, що надає більшу гнучкість у керуванні даними.
Приклад використання прив'язаних директорій
Запуск контейнера із прив'язаною директорією:
docker run -d --name my_container -v /path/on/host:/data nginx
У цьому прикладі директорія /path/on/host на хості монтується у директорію /data всередині контейнера my_container.
Порівняння томів і прив'язаних директорій:
| Характеристика | Томи | Прив'язані директорії |
|---|---|---|
| Зберігання даних | Керується Docker | Керується користувачем |
| Ізольованість | Ізольовані від файлової системи хоста | Використовують файлову систему хоста |
| Продуктивність | Оптимізовано для Docker | Залежить від файлової системи хоста |
| Застосовність | Довготривале зберігання даних | Розробка й тестування |
1.3 Практичні приклади
Практичні приклади використання
Приклад 1: Використання томів для бази даних
Для забезпечення довготривалого збереження даних бази даних можна використовувати томи.
Створення тому:
docker volume create db_data
Запуск контейнера бази даних із використанням тому:
docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v
db_data:/var/lib/postgresql/data postgres
Приклад 2: Використання прив'язаних директорій для веб-розробки
Для розробки веб-застосунку можна використовувати прив'язані директорії, щоб зміни в локальних файлах одразу відображались у контейнері.
Запуск контейнера із прив'язаною директорією:
docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx
У цьому прикладі поточна робоча директорія my_website монтується в директорію /usr/share/nginx/html контейнера nginx.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ