Docker против общих папок Windows

Я пытаюсь получить доступ к удаленной общей папке из контейнера докеров в Docker для Windows.

В то время как внутри контейнера работает dir \\target\share, выдает «Сетевой путь не найден». Целевой объект может быть пропингован изнутри контейнера, а общий ресурс доступен из хост-системы.

Используемый образ — microsoft/dotnet-framework:4.7.2-sdk, и я запускаю его только с опцией -it для тестирования.

Чего мне не хватает, чтобы заставить это работать?


person Dawnkeeper    schedule 20.09.2018    source источник
comment
Похоже на проблему с правами доступа к файлу.   -  person not2qubit    schedule 01.10.2018


Ответы (2)


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

Более простое решение — добавить параметр --network host к команде docker run. Таким образом, контейнер имеет доступ к тем же сетевым интерфейсам, что и хост, и виртуальный интерфейс не создается.

person Amedeo    schedule 30.09.2018

Вы можете использовать тома docker для подключения папки/сетевого ресурса в контейнере.

Создайте том докера на хосте:

$ docker volume create --driver local \
    --opt type=nfs \
    --opt o=addr=192.168.1.1,rw \
    --opt device=:/path/to/dir \
    foo

Смонтируйте том на контейнере:

$ docker run -d \
  --name devtest \
  --mount source=foo,target=/app \
  nginx:latest

Дополнительные примеры здесь

person Aman B    schedule 24.09.2018
comment
Хотя это решило бы проблему, меня больше интересует, почему я не могу получить к ним доступ из контейнера. - person Dawnkeeper; 24.09.2018