JavaRush /Курси /Модуль 2: Fullstack /Використання биндів

Використання биндів

Модуль 2: Fullstack
Рівень 16 , Лекція 4
Відкрита

5.1 Ідея прив'язаних директорій (bind mounts)

Монтування директорій хоста в контейнери за допомогою прив'язаних директорій (bind mounts) — це потужна функція Docker, яка дозволяє контейнерам напряму використовувати файли та директорії, що знаходяться на хостовій системі. Це особливо корисно для розробки, тестування та налаштування, коли потрібно використовувати локальні файли без їх копіювання у контейнер. У цій лекції ми розглянемо, як використовувати прив'язані директорії, наведемо приклади та кращі практики.

Прив'язані директорії дозволяють монтувати конкретні директорії або файли з хостової системи в контейнери. Це відрізняється від томів, котрі керуються Docker і зберігаються у спеціальній директорії.

Переваги використання прив'язаних директорій

  1. Прямий доступ до файлів хоста: Контейнери можуть напряму використовувати та змінювати файли, що знаходяться на хості.
  2. Зручність для розробки: Розробники можуть змінювати файли на хості та бачити ці зміни у контейнерах в реальному часі.
  3. Гнучкість: Будь-яка директорія на хості може бути змонтована в контейнер.

Команда для монтування прив'язаних директорій

Прив'язані директорії монтуються за допомогою параметрів -v або --mount при запуску контейнера.

5.2 Приклади використання параметра -v

1. Монтування директорії хоста в контейнер

Найпростіший приклад монтування директорії хоста у контейнер:

Terminal

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

У цьому прикладі директорія /path/on/host на хості монтується у директорію /path/in/container всередині контейнера nginx.

2. Монтування файлу хоста в контейнер

Ви також можете монтувати окремі файли:

Terminal

docker run -d --name my_container -v /path/on/host/config.conf:/etc/nginx/nginx.conf nginx

У цьому прикладі файл конфігурації config.conf на хості монтується як файл конфігурації nginx.conf всередині контейнера.

5.3 Приклади використання параметра --mount

Параметр --mount надає більш деталізований спосіб монтування прив'язаних директорій з можливістю вказання різних параметрів.

1. Монтування директорії з використанням --mount

Terminal

docker run -d --name my_container --mount type=bind,source=/path/on/host,target=/path/in/container nginx

Цей приклад аналогічний попередньому прикладу з -v, але використовує більш детальний синтаксис.

2. Монтування в режимі тільки для читання

Terminal

docker run -d --name my_container --mount 
type=bind,source=/path/on/host,target=/path/in/container,readonly nginx

У цьому прикладі директорія монтується в режимі тільки для читання, що запобігає зміні файлів у контейнері.

5.4 Практичні приклади

Для розробки веб-додатка ти можеш монтувати директорію з вихідним кодом на хості у контейнер.

Створення директорії з вихідним кодом на хості:

Terminal

mkdir -p ~/my_web_app
echo "Привіт, Світ!" > ~/my_web_app/index.html

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

Terminal

docker run -d --name web_dev -v ~/my_web_app:/usr/share/nginx/html nginx

Тепер будь-які зміни в директорії ~/my_web_app на хості будуть одразу відображатися у контейнері.

Приклад 2: Використання конфігураційних файлів

Можна монтувати конфігураційні файли з директорії на хості у контейнер.

Створення конфігураційного файлу на хості:

Terminal

echo "user www-data;" > ~/nginx.conf

echo "worker_processes auto;" >> ~/nginx.conf

Запуск контейнера з монтуванням конфігураційного файлу:

Terminal

docker run -d --name nginx_custom -v ~/nginx.conf:/etc/nginx/nginx.conf nginx

У цьому прикладі файл конфігурації Nginx на хості використовується всередині контейнера.

5.5 Перевірка змонтованих директорій та файлів

Ти можеш подивитися вміст змонтованих директорій та файлів, використовуючи команду docker exec для запуску команд всередині контейнера.

Приклад

Перевірка вмісту директорії:

Terminal

docker exec -it my_container ls /path/in/container

Перевірка вмісту файлу:

Terminal

docker exec -it my_container cat /path/in/container/config.conf

Видалення прив'язаних директорій

Прив'язані директорії не управляються Docker напряму, тому їх видалення виконується на рівні файлової системи хоста.

Приклад

Видалення прив'язаної директорії на хості:

Terminal

rm -r /path/on/host
1
Опитування
Керування даними в Docker, рівень 16, лекція 4
Недоступний
Керування даними в Docker
Керування даними в Docker
Коментарі (2)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
21 вересня 2025
тест теж не порадував... питання №10 "Що робить команда docker volume prune?" питання №12 "Що таке команда docker volume prune?" це вже якось несерйозно)
21 вересня 2025
дивна лекція, чесно кажучи.. просто вкотре повторили те, що же неодноразово озвучувалось але якшо дивитись на це як "повторєніє мать учєнія" - то ладно)