Внезапная ошибка “не удалось заполнить том … доступ запрещен” для CIFS-общего ресурса в Docker Swarm

Вопрос или проблема

У меня есть кластер Docker Swarm, состоящий из трех Raspberry Pi, и мой NAS для хранения всех томов в виде CIFS-ресурсов. Ниже приведен сокращенный файл docker-compose:

volumes:
  data:
    driver: local
    driver_opts:
      type: "cifs"
      device: "//10.0.0.2/K8Volumes/grafana_data"
      o: "username=docker,password=xxx,uid=4000,gid=4000,file_mode=0777,dir_mode=0777,nobrl"
services:
  app:
    image: grafana/grafana-oss
    volumes:
      - data:/var/lib/grafana
    ports:
      - 3002:3000

Все мои приложения используют монтирование томов подобным образом, и они работали совершенно нормально до сегодняшнего вечера. Вдруг все мои приложения отображают следующую ошибку:
не удалось инициализировать том: ошибка при монтировании тома '/var/lib/docker/volumes/grafana_data/_data': не удалось смонтировать локальный том: mount //10.0.0.2/K8Volumes/grafana_data:/var/lib/docker/volumes/grafana_data/_data, data: username=docker,password=********: доступ запрещен

Тем не менее, права доступа на моем NAS, кажется, в порядке:
введите описание изображения здесь

Кроме того, я могу получить доступ к ресурсам на своем Windows ПК без каких-либо проблем.

Что я уже попробовал:

  • Перезагрузка стека/узла кластера/нас
  • Сброс пароля пользователя NAS
  • Добавление параметров для монтирования (nobrl,noperm,nolock,soft,rw)
  • chmod 777

Ответ или решение

Проблема, с которой вы столкнулись, связанная с ошибкой "failed to populate volume: permission denied" при использовании CIFS-шар в Docker Swarm, может возникать по нескольким причинам. Давайте рассмотрим возможные решения этой проблемы.

  1. Проверка учетных данных: Убедитесь, что учетные данные пользователя, указанные для подключения к CIFS, являются корректными. Если вы изменили пароль, убедитесь, что он был также обновлён в конфигурации Docker (docker-compose.yml). Учитывайте, что в Docker Swarm учетные данные хранятся в секретах и должны быть правильно обновлены.

  2. Права доступа на NAS: Убедитесь, что у пользователя, через которого производится подключение, есть все необходимые права доступа к соответствующей CIFS-акции. Попробуйте временно установить разрешения на наличие полной записи для всех пользователей и проверьте, исчезла ли ошибка.

  3. Обновление опций монтирования: Параметры монтирования могут влиять на доступ. Попробуйте использовать следующие параметры для o в вашем docker-compose.yml:

    o: "username=docker,password=xxx,uid=1000,gid=1000,file_mode=0777,dir_mode=0777,nobrl,noperm"

    Убедитесь, что UID и GID соответствуют пользователю Docker на вашем Raspberry Pi.

  4. Проверка сетевых настроек: Проверьте, что NAS доступен из контейнеров. Попробуйте выполнить ping с контейнера на IP-адрес NAS. Если сеть недоступна, проверьте настройки вашего маршрутизатора или сети.

  5. Проверка конфигурации Docker: Убедитесь, что у вас установлен и использован правильный драйвер для CIFS. Вы можете воспользоваться командой docker info для проверки поставляемых драйверов и их состояний.

  6. Логи системы: Изучите системные журналы (/var/log/syslog или journalctl -u docker.service) на предмет дополнительных сообщений об ошибках, связанных с монтированием CIFS.

  7. Обновление Docker и системы: В некоторых случаях проблема может быть связана с конкретной версией Docker или ОС. Убедитесь, что у вас установлены последние обновления и версии.

  8. Работа с монтируемыми директориями: Удалите старые монтирования и попробуйте заново подключить том без наличия никаких других использований. Вы можете использовать команды docker volume rm для удаления, если тома больше не нужны.

Применяя эти рекомендации, проблема с доступом должна быть разрешена. Если ошибка сохраняется, детализируйте логи и сообщения об ошибках, чтобы мы могли более точно диагностировать проблему.

Оцените материал
Добавить комментарий

Капча загружается...