Docker Error: mount denied: path is not shared from OS host — Решение
Архитектура Docker Desktop Virtualization и механизм File Sharing
Ошибка Error response from daemon: mount denied: The path is not shared from the host and is not known to Docker характерна для сред Docker Desktop (macOS, Windows). В отличие от нативного Linux, где контейнеры используют общее ядро с хостом, в Docker Desktop демон dockerd работает внутри легковесной виртуальной машины Linux (Hyper-V, WSL2 или Apple Virtualization Framework). Для предоставления доступа к файлам хоста используется механизм File Sharing (VirtioFS / gRPC-FUSE / Plan 9). Если запрошенный каталог не включен в список разрешенных ресурсов, гипервизор блокирует операцию монтирования.
Бизнес-риски:
Полная блокировка локальной разработки у frontend/backend инженеров, невозможность локального тестирования микросервисов, потеря рабочего времени команд разработки.
Таблица компонентов виртуализации Docker Desktop
| ОС Хоста | Драйвер виртуализации | Механизм общего доступа |
|---|---|---|
| macOS (Apple Silicon / Intel) | Apple Virtualization Framework | VirtioFS / gRPC-FUSE (Settings -> File Sharing) |
| Windows 10/11 (WSL2) | WSL2 Linux Kernel | WSL2 9P / VHDX Mounts |
| Windows 10/11 (Hyper-V) | Hyper-V MobyLinuxVM | SMB / File Sharing Resources |
Пошаговая настройка разрешений File Sharing
Сценарий 1: Добавление каталога в File Sharing на macOS
- Откройте Docker Desktop -> нажмите на иконку шестеренки (Settings).
- Перейдите в раздел Resources -> File Sharing.
- Нажмите кнопку + (Add) и выберите директорию вашего проекта (например,
/Users/developer/projects). - Нажмите Apply & Restart.
Сценарий 2: Переключение на Virtualization Framework / VirtioFS
На современных версиях macOS VirtioFS обеспечивает максимальную скорость и стабильность:
# Проверка доступности пути через CLI macOS
ls -la /Users/$(whoami)/projects
# В настройках Docker Desktop:
# Settings -> General -> выберите 'Use Virtualization framework'
# Settings -> Features in development -> включите 'VirtioFS'Сценарий 3: Настройка Docker Desktop на Windows с бэкендом WSL2
Если проект находится внутри файловой системы Windows, а Docker использует WSL2:
# Настройка WSL Integration в Docker Desktop:
# Settings -> Resources -> WSL Integration -> Включите нужный дистрибутив
# Рекомендация ITSTM: Перенесите код внутрь файловой системы WSL2:
mkdir -p ~/projects/app
cd ~/projects/app
# Запуск из нативного Linux пути исключает ошибки маппинга Windows-дисковТиповые ошибки администраторов
- Хранение тяжелых проектов (node_modules, vendor) на смонтированных дисках Windows: Скорость I/O через трансляцию файловой системы падает в десятки раз, приводя к таймаутам монтирования.
- Монтирование системных директорий без прав администратора: Попытка смонтировать
/etcили системные папки блокируется встроенными политиками безопасности ОС хоста.
ITSTM настроит стандартизированное окружение Dev-контейнеров, интеграцию с WSL2/macOS и удаленные Dev-серверы для ускорения разработки.
Частые вопросы (FAQ)
Почему ошибка возникает при монтировании путей из /var/folders/ на Mac?
Директория /var/folders на macOS является скрытой временной папкой. Добавьте путь '/private' или '/var/folders' в список File Sharing в настройках Docker Desktop.
Нужно ли перезапускать Docker Desktop после изменения путей?
Да, виртуальная машина гипервизора должна перемонтировать хостовые разделы, поэтому нажатие Apply & Restart обязательно.
Почему на Linux серверах такой ошибки не бывает?
В Linux Docker работает напрямую с ядром хоста и файловой системой без слоя виртуализации гипервизора, если не включены жесткие профили AppArmor/SELinux.
Как исправить проблему, если путь содержит символические ссылки (Symlinks)?
Docker Desktop требует, чтобы как сама символическая ссылка, так и целевая директория входили в разрешенный список File Sharing.