Как получить доступ к сетевому диску Windows из контейнера Docker на Windows

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

Мне нужно получить доступ к общему сетевому диску D: из моего контейнера Windows. Использую Docker Desktop 2.1.0.5 с контейнерами Windows и Windows 10 Pro 1903.

Я пытался использовать:

docker run --rm -it mydocker/image -v D::C:\D --name myimage

и получаю эту ошибку:

 Система не может найти указанный файл

Я также пытался с IP-адресом:

docker run --rm -it mydocker/image -v \\ip\data:C:\D --name myimage

но все равно получаю ту же ошибку.

Я пробовал с Docker Desktop 2.2.0.0, но ошибка была такой же, и я откатился к предыдущей версии из-за проблемы (только чтобы быть уверенным).

Связанный вопрос docker-windows-container-how-to-mount-a-host-folder-as-data-volume-on-windows.

Редактировать:
Похоже, что имя образа должно быть последним аргументом. Теперь у меня другая ошибка:

docker run --rm -it -v \\ip\data:C:\D --name myimage mydocker/image

docker: Ошибка ответа от демона: недопустимая спецификация тома: '\\ip\data:C:\D'

Я думаю, что будет проще, если вы используете команду net use внутри контейнера ПОСЛЕ его запуска. Я запустил контейнер с gMSA и CredentialSpec, но не знаю, является ли это обязательным.

Внутри контейнера я выполнил net use D: \\ipaddress\c$, и меня попросили ввести учетные данные:
введите описание изображения здесь

Команда завершилась успешно, теперь я снова выполнил net use, чтобы увидеть список сетевых дисков:
введите описание изображения здесь

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

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

Для доступа к сетевому диску Windows из контейнера Windows Docker, вы можете выполнить несколько шагов, чтобы правильно настроить ваше окружение. Вот как это сделать:

Шаг 1: Проверьте доступ к сетевому диску

Первым делом, убедитесь, что ваш файл-сервер доступен и вы можете получить к нему доступ из вашей основной операционной системы. Для проверки выполните команду в командной строке Windows:

net use Z: \\ipaddress\shared_folder

Замените ipaddress на IP-адрес вашего файла-сервера и shared_folder на имя вашего общего ресурса. Если это сработает, вы сможете продолжить.

Шаг 2: Запустите контейнер

Теперь вы можете запустить контейнер и использовать команду net use для монтирования сетевого диска. Используйте следующую команду, чтобы запустить ваш контейнер:

docker run --rm -it --name myimage mydocker/image

Обратите внимание, что здесь мы не монтируем диск при старте контейнера. Это важно для того, чтобы избежать ошибок c недоступностью сети на момент инициализации.

Шаг 3: Подключитесь к сетевому диску внутри контейнера

Внутри контейнера выполните следующую команду для подключения к вашему сетевому диску:

net use D: \\ipaddress\shared_folder

Где D: — это буква, которая будет использоваться для монтирования сетевого диска внутри контейнера.

Шаг 4: Укажите учетные данные (при необходимости)

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

Шаг 5: Проверьте подключение

После успешного выполнения команды net use вы можете просмотреть список подключенных дисков, используя:

net use

В это время вы можете перемещаться по дискам и просматривать содержимое вашего сетевого ресурса.

Примечание

Важно понимать, что при работе с Windows-контейнерами и сетевыми ресурсами могут возникнуть ограничения безопасности, особенно если вы используете Windows Group Managed Service Accounts (gMSA). Убедитесь, что ваш контейнер имеет необходимые разрешения и доступ к сетевым ресурсам.

Также обратите внимание на то, что сети и доступ к ним могут зависеть от настроек вашей локальной сети и разрешений, установленных на файл-сервере.

Если у вас есть дополнительные проблемы или хотите более подробно изучить настройки, не стесняйтесь обратиться за помощью в специализированные форумы или документацию Docker.

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

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