Докер на windows 10 не может монтировать тома при включенном VPN - PullRequest
0 голосов
/ 27 февраля 2019

Я вижу проблемы с монтированием локальных томов при запуске docker в Windows 10. Проблемы появляются только тогда, когда у меня включена VPN моей компании.

C:\Users\matt> docker run --rm -v d:/tmp:/data alpine ls /data
my_local_test_file.txt

При подключении к VPN я получаю следующее:

C:\Users\matt> docker run --rm -v d:/tmp:/data alpine ls /data
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: error while creating mount source path '/host_mnt/d/tmp': mkdir /host_mnt/d: file exists.

Версия Docker 17.12.0-ce-win47

Я считаю, что проблема в том, что Dockerиспользует сеть при монтировании локальных томов, а VPN направляет ВСЕ сетевой трафик через шлюз VPN, поэтому докер не видит локальный диск.

Есть ли обходной путь для этого?

IЯ знаю, что могу запустить Docker внутри виртуальной машины Linux или использовать панель инструментов Docker.Ни один из них не особенно хорош.

Есть ли другой возможный обходной путь?

1 Ответ

0 голосов
/ 16 марта 2019

VPN маршрутизирует ВСЕ сетевой трафик через шлюз VPN

Вы, вероятно, правы, и в этом случае весь трафик, перенаправленный с клиента Docker на демон Docker, также будет проходить через VPN.Когда вы используете Docker CLI в Windows, он подключится к демону Docker, доступному через сеть.Использование VPN может нарушить этот механизм.

Я думаю, что происходит:

  • Когда VPN отключен, вы используете демон Docker на своей машине, и все работает
  • Когда VPN включен, другой DockerДемон используется либо потому, что ваш трафик перенаправления VPN адресован вашему хосту Docker (127.0.0.1 по умолчанию или установлен через флаг -H или DOCKER_HOST переменная env ).Это означает, что каким-то образом этот IP-адрес или хост существует в вашей сети VPN, и на нем прослушивается демон Docker (что, как ни странно, использование этого демона может быть рискованным)

Если этона самом деле, вы наверняка увидите другой результат от docker ps -a, docker images и т. д., потому что вы подключаетесь к разным демонам.(демон, доступный через ваш VPN, фактически принадлежит кому-то другому, вам лучше его не использовать!)

Что вы можете сделать:

Не маршрутизировать 127.0.0.1(или все, что настроено в качестве хоста Docker) через VPN

Действие, которое необходимо выполнить, будет зависеть от используемого вами программного обеспечения VPN, или вы можете добавить маршрут непосредственно на вашем компьютере с Windows ( здесьхорошая статья по теме)

Узнайте свой IP при включенном VPN и настройте Daemon для прослушивания этого IP

  • Когда ваш VPNвключен, запустите ipconfig /all и найдите интерфейс, используемый вашей VPN, и его IP-адрес, например 10.142.0.12 (вы можете сравнить выходные данные до / после включения VPN, чтобы определить, какой он есть)
  • Конфигурировать вашДемон Docker прослушивает этот IP-адрес и перезапускает его.Либо используйте пользовательский интерфейс , либо в Windows файл конфигурации по умолчанию расположен в %programdata%\docker\config\daemon.json, например, необходимо указать "hosts": ["10.142.0.12", "127.0.0.1"] ( подробности см. В документах )
  • Настройте хост Docker на 10.142.0.12, когда VPN включен, либо установив переменную среды DOCKER_HOST=10.142.0.12, либо с помощью клиента docker -H 10.142.0.12 <cmd>

/! \ Примечание о безопасности: это может привести кпроблема безопасности, так как любой, кто знает ваш IP в сети VPN, сможет использовать демон на вашем компьютере


Надеюсь, это поможет.Я не эксперт по Windows, поэтому я не смог подробно рассказать о проблемах, связанных с Windows, но не стесняйтесь спрашивать подробности, если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...