Docker LinuxDocker Desktop

Docker: Контейнер Docker не видит смонтированный каталог хоста

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

Контейнер не видит каталог, подключённый с хоста: путь пустой, приложение получает ENOENT или Permission denied. Bind mount имеет два пути — source на хосте и target внутри контейнера, их нельзя путать.

В этой статье
  1. Как выглядит неисправность
  2. Причины и признаки
  3. Пошаговое устранение
  4. Как проверить результат
  5. Если проблема осталась

#Как выглядит неисправность

Контейнер не видит каталог, подключённый с хоста: путь пустой, приложение получает ENOENT или Permission denied. Bind mount имеет два пути — source на хосте и target внутри контейнера, их нельзя путать.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Монтируется не тот каталогОтносительный путь вычислен из другой директории ComposeВ Mounts Source не совпадает с нужной папкойУказать абсолютный путь и проверить compose config
Нет прав у процесса в контейнереПапка существует, но uid/gid приложения не имеют доступаpermission denied при чтении конкретного файлаСогласовать владельца и доступ только к нужной папке

#Пошаговое устранение

  1. 1. Проверьте реальный путь хостаВ терминале Linux-хоста выполните pwd и ls -ld /полный/путь. На Windows/macOS откройте папку через проводник и убедитесь, что Docker Desktop имеет разрешение на её совместное использование. Не полагайтесь на путь внутри контейнера.
  2. Linux-хост, только проверка; путь заменить своим
    Linux · Терминал (Bash)Команда
    Linux-хост, только проверка; путь заменить своим.
    pwd
    ls -ld /полный/путь
  1. 2. Проверьте итоговую конфигурациюВ папке Compose выполните docker compose config. Найдите volumes конкретного сервиса и проверьте source/target и тип bind. Не отправляйте полный вывод публично, если в нём есть закрытые переменные.
    Linux · Терминал (Bash)Команда
    Читает и раскрывает разрешённую конфигурацию; может содержать секреты.
    docker compose config
  1. 3. Узнайте фактически подключённые каталогиВыполните docker inspect --format ... ИМЯ. В Mounts источник должен указывать на нужную существующую директорию хоста, а Destination — на место чтения внутри контейнера.
    Linux · Терминал (Bash)Команда
    Проверяет фактические монтирования.
    docker inspect --format '{{json .Mounts}}' ИМЯ
  1. 4. Проверьте видимость файлов, не меняя ихЕсли Linux-образ содержит ls, запустите docker exec ИМЯ ls -la /путь/в/контейнере. Для distroless используйте специально подготовленный тестовый контейнер/образ. Если файл есть, но доступ отказан, проверьте UID/GID процесса и права на каждый родительский каталог.
    Linux · Терминал (Bash)Команда
    Только чтение; команда ls может отсутствовать в образе.
    docker exec ИМЯ ls -la /путь/в/контейнере
  1. 5. Исправьте только нужный путьИзмените bind mount в compose.yaml: source — существующий каталог на хосте, target — точный путь приложения. Для только чтения используйте read_only: true в длинной форме mounts. Проверьте docker compose config --quiet.
  1. 6. Пересоздайте тестовый сервис и проверьтеПосле сохранения текущей конфигурации примените docker compose up -d --force-recreate ИМЯ_СЕРВИСА к тестовому сервису. Повторите проверку нужного файла и запрос приложения; если permission denied — согласуйте минимальные права с администратором, а не отключайте защиту.
    Linux · Терминал (Bash)С осторожностью
    Меняет контейнер, возможен краткий простой; использовать на согласованной тестовой копии.
    docker compose up -d --force-recreate ИМЯ_СЕРВИСА

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Как проверить результат

Контейнер читает ровно нужные файлы, путь в docker inspect соответствует ожидаемому, а права других каталогов хоста не ослаблены.

#Если проблема осталась

Не повторяйте опасные действия на рабочем окружении. Сравните первоначальный симптом с новым состоянием, сохраните обезличенные сообщения и версии компонентов, проверьте резервную копию; перед изменением общей истории Git или данных/сети Docker обратитесь к ответственному администратору проекта.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.