Параметры брандмауэра Windows, позволяющие Docker для Windows предоставлять общий доступ к диску

142

Брандмауэр Windows блокирует мою попытку разрешить Docker для Windows совместно использовать C: на компьютере с Windows 10.

Прекрасно работает при выключенном брандмауэре Windows. Когда он идет, я получаю

Брандмауэр блокирует обмен файлами между Windows и контейнерами. См. Документацию для получения дополнительной информации.

В документации говорится

Вам не нужно открывать порт 445 в любой другой сети. По умолчанию разрешены подключения к порту 445 10.0.75.1 (хост Windows) из 10.0.75.2 (виртуальная машина).

Я «погуглил», пытаясь найти, как это сделать - может кто-нибудь посоветовать?

Рибай
источник
20
Cisco AnyConnect VPN блокировал это для меня, после выхода из VPN это работало.
Крис Вольф
2
У меня Cisco блокирует меня, но мне НЕОБХОДИМО подключиться к VPN, а также иметь общий доступ к Docker ... Есть идеи?
Николас Ирисарри
1
Я следил за этим для Norton Firewall, и он отлично работал stackoverflow.com/questions/45159006/…
Робин Саннер,
См. Пост, который отвечает на этот вопрос ниже superuser.com/questions/1470821/…
Aravind S
1
@NicolasIrisarri: Я решил ту же проблему (нужно использовать их оба одновременно). Решение состоит в том, чтобы использовать подсеть, отличную от той, которая защищена AnyConnect. См. Мой ответ ниже: stackoverflow.com/a/58406873/9064636
Averell

Ответы:

153

На самом деле вам не нужно предоставлять общий доступ к диску C, а только переустановите (или, возможно, даже снимите флажок - нажмите OK, а затем установите флажок) службу общего доступа к файлам и принтерам на виртуальной сетевой карте Hyper-V. См. Эту статью.

Также, если есть ограничения на ваши сетевые профили (например, общедоступные), рассмотрите возможность изменения «неопознанной сети» по умолчанию для карты «vEthernet (DockerNAT)» на частную с помощью этой команды PowerShell, прежде чем выполнять указанные выше действия:

Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private
Дэвид Тесар
источник
4
Мне пришлось закрыть Docker для Windows и перезапустить его после выполнения указанной выше команды Powershell. Вы можете бежать, Get-NetConnectionProfileчтобы убедиться, что DockerNATсеть находится в Privateкатегории,
seangwright
1
Ссылка на blog.olandese.nl/2017/05/03/… решила мою проблему. Большое спасибо!
Андри
1
Ни один из них не работал у меня, поэтому я попробовал: stackoverflow.com/a/47837191/1895627
Андрей
3
Я не могу удалить это, я получаю сообщение об ошибке 0x80071779, я пытался отключить -> включить. Также брандмауэр отключен ... Я также пытался установить частный, все еще не работает, есть идеи?
BrunoLM
2
удалить службу обмена файлами и принтерами:Disable-NetAdapterBinding -Name "vEthernet (DockerNAT)" -ComponentID ms_server
Marcel DB
73

Итак, после решения той же проблемы я нашел решение.

Вот что я сделал:


Шаг 1. Откройте ESET. Затем нажмите " Настройка".

нажмите кнопку настройки

Шаг 2. Нажмите Защита сети.

нажмите защита сети

Шаг 3. Щелкните Мастер устранения неполадок.

щелкните мастер устранения неполадок

Шаг 4. Найдите соединение 10.0.75.2 (настройка IP- адреса докера по умолчанию). Просто проверьте, какой диапазон IP-адресов определен в настройках вашего докера. Затем найдите IP-адрес, который находится в этом диапазоне.

найти связь

Шаг 5: Нажмите кнопку « Разблокировать» , после чего вы должны получить этот экран.

нажмите разблокировать

Это решило проблему для меня.

Затем вы можете перейти к Правилам и проверить добавленное правило.


PS: Это мой первый пост, прошу прощения за неправильные процедуры.

Франш Ван ден Берг
источник
Этот пост был чрезвычайно полезен для меня, потому что при добавлении правил, подобных объясненным в документации, упомянутые IP-адреса были разными. Пошел безиг!
DelphiLynx
11
Для всех пользователей ESET это решение, спасибо!
cudacoder
2
Отличный вклад Франш Ван Ден Берг, спасибо. Это действительно решение для пользователей ESET, и очень элегантное.
Vacilando
Для ESET убедитесь, что сеть
WhiteKnight,
Это точное решение сработало для меня безупречно. Спасибо!
khalid
63

Мне помогает только это решение:

  • Перейдите в Hyper-V Manager -> Virtual Switch Manager -> DockerNAT -> Тип подключения: изменить с внутреннего на частный, применить, вернуться к внутреннему, применить
  • Перезапустите MobyLinuxVM
  • Перезапустить докер
  • Установите для сетевого профиля Docker значение «Частный». Запустить команду в PowerShell от имени администратора
    Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private
  • Сброс общего доступа к файлам и принтерам для сетей Microsoft при подключении DockerNAT
  • Перейдите в Docker -> Настройки -> Общие диски и поделитесь C:
kostia24
источник
6
Стоит отметить, что запускать Set-NetConnectionProfileв PowerShell от имени администратора, а не обычного Cmd. У меня он работает нормально, но адаптер Ethernet все еще естьunidentified network
DarkMukke
3
ковровые бомбардировки FTW. Ни одно из других решений не помогло. Спасибо.
Дэвид Уэст
Это сработало на 100%. На этот раз ни один из других вариантов не сработал, и окончательным решением было установить частную сеть.
lordg
Спасибо чувак! Ты спас мне день. Это только один способ исправить эту чертову ошибку.
TimeCoder
Работал у меня. Большинство других решений не помогли. убедитесь, что вы выполняете ВСЕ шаги. Я на свой страх и риск пропустил шаг «Установить сетевой профиль Docker на« частный »Set-NetConnectionProfile -interfacealias« vEthernet (DockerNAT) »-NetworkCategory Private».
Мистер Слим
57

Моим решением было отключиться от VPN; это было причиной проблемы

Яназ
источник
2
Я также решил проблему после отключения от моего VPN, что, конечно, я не пробовал, пока не исчерпал все другие возможности. вздох
Киркайя
Полдня искал и просто нужно было отключиться от VPN .. Спасибо!
HELPME
1
Простое решение .. Спасибо!
MilanYadav
1
Благодарность! Я забыл свой VPN-клиент, который автоматически запускается при загрузке Windows.
Фабио Формоза
Спасибо! Я безуспешно выполнил другую инструкцию, но после отключения от VPN все заработало !!!
MeIr
27

Когда я столкнулся с этой ошибкой, я не использовал сторонние брандмауэры. Я был убежден, что это проблема с брандмауэром Windows, хотя отключение брандмауэра Windows не помогло мне. Я наконец нашел этот пост в блоге после долгих исследований: Ошибка Docker в Windows 10: брандмауэр блокирует общий доступ к файлам ...

В конечном итоге это НЕ связано со встроенным брандмауэром Windows.

Исправление

  1. Снимите флажок Общий доступ к файлам и принтерам для сетей Microsoft с сетевого адаптера vEthernet (DockerNAT) (вы можете найти соединение в Центре управления сетями и общим доступом Windows ).
  2. Еще раз проверьте его и убедитесь, что он включен.
чиминикиз
источник
Сработало у меня отлично, спасибо!
LewisCheng-MSFT
По-видимому, это сработало и для меня. Я проверил брандмауэр Windows, и у меня уже было правильное правило, вероятно, предустановленное самим докером.
Давид Инглима
Было бы неплохо узнать, почему это работает и какова настоящая основная причина проблемы. Кажется, часто случается.
Джейсон Роу
Проблема в том, что вам нужно сделать это снова после перезагрузки системы
AFD
@AFD, интересно, у меня такой проблемы нет.
jiminikiz 08
22

Мой диск C перестал использоваться Docker после недавнего обновления Windows 10. У меня возникла та же проблема, когда я сказал, что он был заблокирован брандмауэром Windows, когда пытался опубликовать его у себя.

Просматривая приведенные выше решения, я нашел то, что сработало для меня, что проще, чем все, что я видел на этой странице. В Панели управления \ Все элементы панели управления \ Центр управления сетями и общим доступом в соединении vEthernet (DockerNAT) я снял флажок со свойства Общий доступ к файлам и принтерам для сетей Microsoft и сохранил настройку. Затем я снова проверил свойство, чтобы снова включить его, и снова сохранил.

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

рывок
источник
Ничего себе, это досадный баг .. Я искал весь день, спасибо
a11r
это почти сработало. я не получаю сообщение брандмауэра, но флажок не установлен!
jokab 08
17

У меня была эта проблема с Касперским; отключение Касперского сработало, поэтому я знал, что это брандмауэр. В моем случае Касперский почему-то уже блокировал порт 445. Мне пришлось перейти к Правилам пакетов для брандмауэра, локальных служб (TCP) и удалить 445 из списка портов блокировки.

Изображение 1

Изображение 2

Барри Холройд
источник
1
Сработало у меня! Но пользовательский интерфейс в Kaspersky ES 10. выглядел иначе: вкладка «Настройки»> «Брандмауэр» слева> нажмите кнопку «Сетевые пакетные правила»> «Локальное TCP-соединение»> «Изменить» вверху
Саймон Б.
1
Вместо того, чтобы удалить 445 из списка, изменил «Действие» с «Заблокировано» на «По правилам приложений», и это сработало для меня. Поэтому я предполагаю, что удаление 445 из «Локальных служб (TCP)» и создание нового правила «Docker SMB Mount» с действием «По правилам приложений» также должны работать.
Джимсон Каннантара Джеймс
Этот сработал для меня. Мне пришлось приостановить работу Kaspersky, а затем попробовать включить общий диск в Docker для Windows.
gdyrrahitis
Спасибо, что поделились решением для Kaspersky. У меня это сработало.
Намит 03
У меня была такая же проблема, и я подписался на matthewhorne.me/…
Энтони О.
11

Для компьютеров с Windows 10 в доменных сетях при создании адаптера виртуального Ethernet Hyper-V он классифицируется как общедоступная сеть. Вы должны изменить его на частную сеть, чтобы разрешить более мягкие правила брандмауэра Windows и, следовательно, разрешить совместное использование файлов.

Выполните следующую команду в PowerShell:

Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private

Измените имя в кавычках, если виртуальное сетевое соединение Hyper-V вашей машины называется другим именем.

Mzamora
источник
Сработало для меня как шарм. Выполните команду в сеансе Powershell 6 в Windows 10 v10.0.17763, сборка 17763, Docker v18.09.2, сборка 6247962, и под управлением Norton Security Suite.
Адам
9

Моя проблема заключалась в том, что Cisco Anyconnect VPN помешала внутренней сети докеров

чтобы исправить это, перейдите в:
Настройки Cisco Anyconnect> Настройки> отметьтеAllow local (LAN) access when using VPN

Араш Моосапур
источник
Это сработало для меня, когда предложения о совместном использовании печати файлов не работали. Anyconnect Allow local (LAN) access when using VPNуже был проверен, поэтому я снял его, отключил, перепроверил опцию и снова подключился к VPN. Затем Docker для Windows применил общий ресурс диска по желанию.
Аарон
У меня не получилось, мне пришлось отключить Cisco AnyConnect, чтобы поделиться дисками. Любые идеи?
Джек
Судя по всему, воины нашей корпоративной сети обеспечили безопасность 0.0.0.0/0, так что мне не повезло :-(
Джек
8

Как указано в одном другом ответе, Docker не очень хорошо работает с VPN. Если вы используете Nordvpn, вам необходимо отключить «Невидимость в локальной сети» и, возможно, «Internet Kill Switch» .

Если вы это сделали, он должен работать даже при активном VPN.

Клиент NordVPN

Максимилиан Аст
источник
2
Спасибо! Это решило проблему для меня. Я застрял на 2 недели!
user3034 04
1
Спасибо огромное! Несколько часов игры с настройками сети, это единственное, что у меня сработало!
AnotherShruggingPhysicist
6

Это зависит от того, какой брандмауэр у вас установлен. В моем случае я отключил встроенный брандмауэр Windows и использую ESET Smart Security, поэтому мои правила выглядят так:

  • Создайте правило для подключения IN, так как вы должны разрешить Docker подключаться к вашему хосту и установить для него значение Разрешить

введите описание изображения здесь

  • Настройте порт должным образом, как описано в документации, означающей 445:

введите описание изображения здесь

  • Настройте удаленный IP-адрес:

введите описание изображения здесь

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

ReynierPM
источник
Спасибо, Рейнье, я как мог следил за тем, что вы показываете в эквиваленте брандмауэра Windows. - Вкладка «Общие» = «Включено» - Вкладка «Протоколы и порты» = протокол TCP и локальный порт = 445 - Вкладка «Область действия» = Удаленный IP-адрес = 10.0.75.2 Но получено такое же сообщение об ошибке. Разрешены все порты и IP-адреса - результат тот же. Другое правило имеет приоритет?
Ribeye
Будет лучше, если вы добавите несколько скриншотов того, что у вас есть, потому что я ненавижу брандмауэр Windows и никогда не сталкивался с этим раньше ...
ReynierPM
как выбрать приложение "Система"?
Küzdi Máté
Нет необходимости добавлять приложение «Система», но необходимо убедиться, что сеть DockerNAT является надежной в известных сетях с диапазоном IP-адресов 10.0.75.1/24
Мигель
Мы не используем ESET: /
Ионел Лупу
4

У меня ничего из вышеперечисленного не сработало.

В конечном итоге трюк помог открыть свойства сети «vEthernet (DockerNAT)» и установить флажок «Расширяемый виртуальный коммутатор Hyper-V» в нижней части списка на вкладке «Сеть».

Не уверен, действительно ли это исправление или это просто как-то сбросило для меня сетевой адаптер ... но это сработало!

Сэмюэл Нойгбер
источник
4

Кажется, что у многих возникает эта проблема при запуске Cisco AnyConnect. У меня такая же проблема, и вот как я решил:

Причина: подсеть, используемая Docker, находится в списке защищенных маршрутов, управляемых Cisco AnyConnect (я считаю, что этим списком управляет администратор вашей VPN).

Решение: измените подсеть, используемую Docker, чтобы она не пересекалась со списком, управляемым AnyConnect.

Например, в моем случае я изменил значение с 10.0.75.0 (которое перекрывалось с 10.0.0.0/8) на 172.31.0.0/28. введите описание изображения здесь

Аверелл
источник
3

У меня была та же проблема, и я попробовал все исправления - и оказалось, что нужно больше одного:

  • Добавить правило брандмауэра (Norton Security для меня)
  • Сделайте сеть частной
  • Поделитесь поездкой

Я написал полное объяснение на http://kajabity.com/2017/08/unblock-docker-for-windows-firewall-issues-with-host-volumes/

Саймон Уильямс
источник
1
«Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится ».
McGrady
Ключевым моментом для меня было создание частной сети докеров.
Майк Кэрон
3

Мой диск G перестал использоваться Docker после недавнего обновления Windows 10. У меня возникла та же проблема, когда я сказал, что он был заблокирован брандмауэром Windows, когда пытался опубликовать его у себя.

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

Итак, если вы хотите, вы можете попробовать сделать это -

введите описание изображения здесь

скряга
источник
3

Все, что все опубликовали, НЕ РАБОТАЕТ для меня.

ЭТО СДЕЛАЛО.

Я установил выпуск EDGE. Затем я зашел в WINDOWS DEFENDER и отключил брандмауэр для DOCKER NAT. (не мой настоящий адаптер Ethernet, просто докер нат)

Как только я отключил защитник / брандмауэр Windows, ТАК он работал нормально.

тьфу. очень надеется, что это поможет некоторым из вас!

Черный георгин
источник
отключение брандмауэра для конкретного подключения (dockerNat) помогло. Большое спасибо!
Mafu
Объясните, пожалуйста, как именно вы отключили брандмауэр Защитника Windows для определенного сетевого адаптера / подключения?
vulcan raven
3

В моем случае я отключил «Блокировать TCP 445» в брандмауэре Защитника Windows в режиме повышенной безопасности, и это сработало. Затем снова включите его после настройки общих дисков в Docker.

установка блока TCP 445

настройка общих дисков

ханкид
источник
Я только что понял, что лично добавил это правило брандмауэра, когда просочились инструменты взлома АНБ. Благодарность!
Danny Z
2

У меня была такая же проблема с F-secure, DeepGuard блокировал службу Docker. Мое решение было:

Откройте клиент F-secure и нажмите « Задачи ».

введите описание изображения здесь

Выберите « Разрешить запуск программы ».

введите описание изображения здесь

Выберите из списка «com.docker.service» и нажмите « Удалить ».

введите описание изображения здесь

После этого перезапустите клиент Docker и попробуйте запросить общий доступ к файлам.

Также здесь очень хорошее руководство по устранению неполадок: Ошибка: брандмауэр блокирует совместное использование файлов между Windows и контейнерами.

понкапе
источник
2

У меня была такая же проблема с брандмауэром, который не позволял мне делиться моим диском C. Я попробовал все перечисленные выше решения, и у меня ничего не получилось. Затем я полностью удалил докер со своей машины. Control Panel\Programs\Programs and Features -> select Docker for Windows -> Uninstall
Затем перейдите на сайт докера и нажмите.Get Docker for Windows (Stable)
После этого я смог поделиться диском C.

Андрей
источник
1
Я буквально все перепробовал, только это решение у меня сработало. Спасибо чувак!
Charis Moutafidis
2

Для AVG Internet Security включение режима общего доступа к подключению к Интернету в настройках брандмауэра помогло мне.

введите описание изображения здесь

Сохаил
источник
2

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

Решение: вдобавок мне пришлось сделать еще одну вещь. Мне пришлось отключить флажок Запретить входящие подключения в общедоступной сети в определенных настройках брандмауэра для общедоступных сетей. После этого он начал работать и у меня. Смотрите скриншоты, прикрепленные в конце этого сообщения.

Не знаю, как долго этот вариант уже существует. Сейчас я работаю над Win 10 Pro 1709 16299.402.


1. Откройте определенные настройки брандмауэра для общедоступных сетей. Откройте определенные настройки брандмауэра для общедоступных сетей

2. Снимите этот флажок. Снимите этот флажок

Baumgarb
источник
2

Используя Kaspersky Internet Security, вы можете легко решить эту проблему, если измените vEthernet (DockerNAT)тип сетевого адаптера на Trusted network.

Настройки> Защита> Брандмауэр> Сети> vEthernet (DockerNAT)> Выберите «Надежная сеть».

введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь

xxxbence
источник
2

25 янв 2020

Похоже, это проблема старых версий, я установил последнюю версию:

Docker version 19.03.5, build 633a0ea

и он работал у меня без какой-либо конфигурации.

введите описание изображения здесь

YCF_L
источник
1

Это (ссылка ниже) кажется лучшим исправлением, которое я нашел до сих пор. Он сохраняется при перезагрузках. Лучше всего это объясняется здесь: https://gist.github.com/biggyspender/8b5b2ed9ff63de31045d41304e3915b3

Сетевой интерфейс vEthernet создается динамически при каждом запуске системы, и он создается в группе «Public», а не в группе «Private» (где он работает). Изменения в одном из сценариев запуска Docker (указанные в приведенной выше ссылке) автоматизируют команду / исправление powershell, отмеченную Дэвидом Тесаром выше ....

Мне больше повезло с добавлением функции в сценарий, а не с редактированием сценария и изменением «Internal» на «Private».

Пол Олсон
источник
1

Если ничего из вышеперечисленного не работает, просто убедитесь, что вы не подключены к VPN . Именно это и случилось со мной, я был подключен к VPN с помощью клиента Cisco AnyConnect, также убедитесь, что вы установили статический DNS в настройках докера.

Кельвин Конфессор
источник
Если вам нужны оба (VPN AnyConnect и Docker), см. Мой комментарий stackoverflow.com/a/58406873/9064636
Averell
1

Я пробовал все, что указано здесь и на https://github.com/docker/for-win/issues/360

У меня ничего не работало.

Я запускаю свою среду разработки в контейнере докеров, и, пока я использую корпоративную VPN (Cisco AnyConnect), мне нужно подключить мой локальный диск к контейнеру для доступа к моим файлам проекта.

Вот хак с докером, который у меня сработал. Добавьте --publish 8000:8000к существующей команде запуска докера.

Так

docker run -v C:/Users/kumar.joshi/KumarData:/mnt --name dev <image:latest>

станет

docker run -v C:/Users/kumar.joshi/KumarData:/mnt --name dev --publish 8000:8000 <image:latest>

Убедитесь, что порт не используется, иначе вы получите эту ошибку:

Ошибка привязки для 0.0.0.0:8000: порт уже выделен

Кумар Джоши
источник
1

Короче, используйте версию Edge.

Версия Docker для Windows в Edge, начиная с версии 2.1.5.0 (2019-11-04), имеет новую реализацию совместного использования файлов без необходимости модификации брандмауэра https://docs.docker.com/docker-for-windows/edge-release-notes /

«Новая реализация совместного использования файлов: Docker Desktop представляет новую реализацию совместного использования файлов, в которой используются сокеты gRPC, FUSE и гипервизора вместо сетей Samba, CIFS и Hyper-V. Новая реализация предлагает улучшенную производительность ввода-вывода. Кроме того, при использовании новая файловая система:

Users don’t have to expose the Samba port, and therefore do not experience issues related to IT firewall or the drive-sharing policy.
There is no need to provide user credentials to Docker Desktop. File access rights are automatically enforced when accessing mounted folders through containers.

"

Вы можете скачать крайнюю версию: https://download.docker.com/win/edge/Docker%20Desktop%20Installer.exe

Обратите внимание, что на данный момент крайняя версия 2.1.7.0 будет использоваться для следующего стабильного выпуска: «Примечание. Docker Desktop Edge 2.1.7.0 является кандидатом на выпуск для предстоящего основного стабильного выпуска». Таким образом, риск использования Edge относительно невелик. Или вы можете дождаться следующей стабильной версии, чтобы избежать всех этих проблем с брандмауэром.

BZ
источник
0

Я нашел это довольно легко. Просто перейдите к вам сетевые подключения. Вы можете перейти в Панель управления / Сеть и общий доступ. Вы найдете различные связи. Найдите соединение с Docker. Выберите, что по умолчанию. После выбора сети перейдите в Свойства. В разделе свойств включите параметр Расширяемый виртуальный коммутатор Hyper-V . Это поможет виртуальному контейнеру использовать сетевую карту.

Анкуш К
источник
0

Что для меня сделало (после нескольких часов проб и ошибок), так это изменение маски подсети с 255.255.255.240на 255.255.255.0(что ничего не должно изменить).

В рамках метода проб и ошибок я сделал все остальное, перечисленное в статье, но безуспешно ... но этот последний шаг сделал это ... и возврат к 255.255.255.240правильному циклу не разрывает.

Я допускаю, что это не имеет смысла ... но это может быть связано с внутренним состоянием, которое запускается только изменением сети.

В любом случае, если я помог только одному, то это того стоило.

Docker Desktop edge, 2.0.4.1 (34207)
Gimlichael
источник