Docker-sync как разработчики победили медленный Docker на macOS

30 Nov, 2025

Знакома ли вам ситуация, когда Docker-контейнеры на Mac или Windows работают в десятки раз медленнее, чем на Linux? Особенно это заметно при работе с большими проектами — сохранение файла может занимать секунды, а перезагрузка приложения превращается в мучительное ожидание. Именно эту проблему решает docker-sync.

Что такое docker-sync?

Docker-sync — это инструмент для разработчиков, который устраняет главную боль при работе с Docker на macOS и Windows — проблему медленной синхронизации файлов между хостом и контейнерами. Проект существует с 2016 года и собрал уже более 3500 звезд на GitHub.

Основная идея проста: вместо использования нативных (и медленных) способов синхронизации в Docker для Mac/Windows, docker-sync предлагает альтернативные методы, которые дают прирост скорости в 10-20 раз.

Кому это нужно?

  • Разработчикам на macOS и Windows, которые используют Docker
  • Командам, работающим с большими проектами (например, Rails, Node.js)
  • Тем, кто устал ждать перезагрузки приложения после каждого изменения кода

Как это работает: 3 ключевые возможности

1. Альтернативные стратегии синхронизации

Docker-sync поддерживает несколько механизмов синхронизации:

  • unison — бинарная синхронизация, отлично работает на macOS
  • rsync — классика, стабильно работает везде
  • native_osx — использует native_osx для максимальной скорости на Mac

Выбор зависит от вашей ОС и требований к скорости.

2. Простота интеграции

Достаточно добавить небольшой конфиг в ваш проект:

# docker-sync.yml
version: "2"
syncs:
  my-sync:
    src: './app'

И немного изменить docker-compose.yml:

volumes:
  - my-sync:/app:nocopy

3. Кросс-платформенность

Хотя проблема особенно актуальна для macOS и Windows, docker-sync работает и на Linux, что делает конфигурации универсальными для всей команды.

Технические детали

Проект написан на Ruby и распространяется как gem. Под капотом используются проверенные инструменты:

  • Unison для бинарной синхронизации
  • Rsync для классической синхронизации
  • FSEvents на macOS для отслеживания изменений

Практическое применение: когда docker-sync спасает

  1. Веб-разработка — особенно с Ruby on Rails, Node.js, где много файлов и частые перезагрузки
  2. Тестирование — когда нужно быстро вносить изменения и проверять результат
  3. Командная работа — когда часть команды на Mac, часть на Linux, а конфиги должны быть одинаковыми

Стоит ли пробовать?

Определенно да, если:

  • Вы разрабатываете на macOS или Windows
  • Ваш проект содержит много файлов
  • Вы устали ждать синхронизации после каждого изменения

Docker-sync — это не магия, а продуманное решение реальной проблемы. Проект активно развивается, имеет хорошую документацию и сообщество. Попробуйте — и, возможно, ваша разработка с Docker станет в разы комфортнее.

Где начать: