Интеграция Docker и Docker Swarm с хранилищем GlusterFS

Автор George, Май 13, 2026, 10:29

« назад - далее »

George

Развертывание контейнеров поверх распределенной файловой системы GlusterFS позволяет контейнерам на разных нодах одновременно читать и писать в одну и ту же директорию. Если контейнер упадет на Node 1 и перезапустится на Node 2, он мгновенно продолжит работу со своими данными.Существует два основных подхода к такой интеграции: прямое монтирование через локальный волюм и использование специализированного плагина.

ВАРИАНТ 1.
Прямое монтирование (Bind Mount) — Самый простой и надежный способ
Поскольку вы уже смонтировали GlusterFS в общую локальную папку /var/www на Web-нодах (в Шаге 7 предыдущей инструкции), вы можете использовать обычный проброс путей.

1.1. Запуск одиночного контейнера (Docker CLI):
Код: bash
docker run -d --name app-web -v /var/www/my-site:/usr/share/nginx/html -p 80:80 nginx:latest
1.2. Описание в Docker Compose:
Код: bash
version: '3.8'services:web:image: nginx:latestports:- "80:80"volumes:- /var/www/my-site:/usr/share/nginx/html
  •  

George

ВАРИАНТ 2. Использование нативного драйвера Docker local (Рекомендуется для Swarm)
Этот способ правильнее для Docker Swarm, так как Docker сам управляет монтированием к GlusterFS в момент старта контейнера на любой ноде кластера.
2.1. Создание Volume через Docker CLI:
Код: bash
docker volume create --driver local --opt type=glusterfs --opt o=addr=10.10.1.42,rw --opt device=:webdata shared_gluster_vol
Где 10.10.1.42 — IP одной из рабочих нод GlusterFS, а :webdata — имя созданного ранее тома GlusterFS.
2.2. Использование в Docker Compose / Swarm Stack:Создайте файл docker-compose-swarm.yml.
Опишите в секции volumes подключение к GlusterFS напрямую. При деплое стек сам создаст нужные именованные волюмы на всех нодах.
Код: bash
version: '3.8'
services:
wordpress:
image: wordpress:latestports:- "8080:80"
volumes:- gluster_wp_data:/var/www/htmldeploy
:replicas: 3
placement:constraints:
- node.role == workervolumes
:gluster_wp_data
:driver
: localdriver_opts
:type: "glusterfs"
o: "addr=10.10.1.42,rw,network.ping-timeout=5"
device: ":webdata"
Запустите этот стек в Swarm-кластере одной командой:
Код: bash
docker stack deploy -c docker-compose-swarm.yml my_web_stack
  •  

🡱 🡳

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.