Какие драйверы хранения (Storage Drivers) в Docker вы знаете?

«Какие драйверы хранения (Storage Drivers) в Docker вы знаете?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Драйвер хранения определяет, как Docker управляет слоями образов и данными контейнеров на файловой системе хоста. Выбор зависит от ФС хоста и требований.

Основные драйверы и мой опыт с ними:

  1. overlay2 (рекомендуемый по умолчанию)

    • Почему: Работает на ext4 и xfs (с включенным ftype=1). Самый производительный и стабильный вариант для большинства дистрибутивов Linux (Ubuntu, RHEL, CentOS).
    • Как проверить и настроить:
      # Проверка текущего драйвера
      docker info | grep "Storage Driver"
      # Для использования overlay2 в /etc/docker/daemon.json
      {
      "storage-driver": "overlay2"
      }
  2. btrfs / zfs

    • Применение: Если хостовой сервер уже использует эти ФС. Они предоставляют продвинутые возможности (снапшоты, квоты, компрессия), но требуют большего внимания при администрировании. Использовал zfs на специализированных нодах для хранения данных stateful-приложений.
  3. devicemapper (устарел)

    • Контекст: Встречал в старых системах (RHEL/CentOS 7), где overlay2 не поддерживался. Требует настройки пула thin provisioning через LVM. Избегаю, так как может приводить к проблемам с производительностью и "полному пулу".
  4. vfs

    • Применение: Только для тестирования. Не использует copy-on-write, поэтому каждый слой копируется полностью. Это очень медленно и занимает много места, но гарантирует полную изоляцию. Может быть полезен в CI-системах для запуска изолированных тестовых контейнеров.

Практический совет: Для production всегда стремлюсь к overlay2 на поддерживаемой ФС. Перед миграцией драйверов обязательно делаю бекап данных томов (/var/lib/docker/volumes/).