Монтировать SMB / CIFS в контейнере Docker
у меня есть веб-приложение, работающее в контейнере Docker. Это приложение должно получить доступ к некоторым файлам на нашем корпоративном файловом сервере (Windows Server с контроллером домена Active Directory). Файлы я пытаюсь открыть файлы изображений, созданные для наших клиентов и веб-приложение отображает их в составе портфеля клиента.
на моей машине разработки у меня есть соответствующие папки, смонтированные через записи в /etc/fstab
и пункты держателя хозяина установлены в Контейнер Docker через
3 ответов
да, Docker предотвращает установку удаленного Тома внутри контейнера в качестве меры безопасности. Если Вы доверяете своим изображениям и людям, которые их запускают, вы можете использовать --privileged
флаг с docker run
отключить эти меры безопасности.
Далее, вы можете объединить --cap-add
и --cap-drop
чтобы дать контейнеру только те возможности, которые ему действительно нужны. (см. документацию) на SYS_ADMIN
потенциал-это тот, который предоставляет привилегии горы.
- Да
- есть закрытый вопрос гора.cifs в контейнере
https://github.com/docker/docker/issues/22197
в соответствии с которым добавление
--cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH
к вариантам запуска сделает mount-t cifs работоспособным.
я попробовал и:
mount -t cifs //<host>/<path> /<localpath> -o user=<user>,password=<user>
внутри контейнера работает
можно использовать smbclient
команда (часть пакета Samba) для доступа к серверу SMB/CIFS из контейнера Docker без его установки, так же, как вы могли бы использовать curl
для загрузки или выгрузки файла.
есть вопрос StackExchange Unix это касается этого, но вкратце:
smbclient //server/share -c 'cd /path/to/file; put myfile'
для нескольких файлов есть -T
опция, которая может создавать или извлекать .tar
архивы, однако это похоже на то, что быть двухэтапным процессом (один для создания .tar
а затем еще один, чтобы извлечь его локально). Я не уверен, что вы могли бы использовать трубу, чтобы сделать это за один шаг.