Вопрос или проблема
Мне нужно получить доступ к общему сетевому диску 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.