Налаштування брандмауера Windows, щоб Docker для Windows міг ділитися накопичувачем


139

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

Відмінно працює, коли брандмауер Windows відключений. Коли його я отримую

Брандмауер блокує обмін файлами між Windows та контейнерами. Докладнішу інформацію див. У документації.

У документації йдеться

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

Я "гуглився", намагаючись знайти, як це зробити - хтось може порадити?


20
VPN Cisco AnyConnect блокував це для мене, після виходу з VPN він працював.
Кріс Вольф

1
У мене Cisco блокує, але мені НЕОБХІДНО бути на VPN, а також ділитися Docker ... Будь-які ідеї?
Nicolas

1
Я дотримувався цього за Брандмауером Нортона, і він прекрасно працював stackoverflow.com/questions/45159006/…
Робін Саннер

Дивіться нижче публікацію, яка відповідає на це питання superuser.com/questions/1470821/…
Aravind S

1
@NicolasIrisarri: Я вирішив ту саму проблему (Потрібно використовувати обоє одночасно). Рішення полягає у використанні іншої підмережі, ніж та, що захищена AnyConnect. Дивіться мою відповідь нижче: stackoverflow.com/a/58406873/9064636
Аверелл

Відповіді:


151

Насправді вам не потрібно ділитися накопичувачем C, а лише перевстановлюйте (або, можливо, навіть зніміть прапорець - натисніть кнопку ОК - потім перевірити) службу спільного використання файлів та друку на віртуальній мережевій карті 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, я намагався відключити -> enable. Також брандмауер відключений ... Я також намагався налаштувати приватні, все ще не працюючі, якісь ідеї?
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 і дуже елегантне.
Васіландо

Для ESET переконайтеся , що мережа докер в довірену зону
WhiteKnight

Це точне рішення працювало для мене бездоганно. Спасибі!
Халід

63

Тільки це рішення допомагає мені:

  • Перейдіть до Hyper-V Manager -> Менеджер віртуальних комутаторів -> DockerNAT -> Тип з'єднання: перехід від внутрішнього до приватного, застосуйте, поверніть на внутрішній, застосуйте
  • Перезапустіть MobyLinuxVM
  • Перезавантажте Докер
  • Встановіть профіль мережі Docker на "Приватне". Запустіть команду в PowerShell як адміністратор
    Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private
  • Скиньте спільний доступ до файлів і принтерів для мереж Microsoft на з'єднанні DockerNAT
  • Перейдіть до Docker -> Налаштування -> Спільні диски та поділіться C:

6
Варто зауважити, що слід запускати Set-NetConnectionProfileв PowerShell як адміністратор, а не звичайний Cmd. Для мене це добре працює, але Ethernet-адаптер все ще єunidentified network
DarkMukke

3
килимове бомбардування FTW. Жодне з інших рішень не працювало. Дякую.
Девід Вест

Це спрацювало 100%. Жоден з інших варіантів цього разу не працював, і остаточним рішенням було встановити мережу приватною.
lordg

Спасибі людино! Ти врятував мені день. Це лише один робочий спосіб виправити цю прокляту помилку.
TimeCoder

Працювали для мене. Більшість інших рішень не зробили. переконайтесь, що ви виконуєте ВСІ кроки. Я пропустив "Встановити мережевий профіль Docker на" Приватний "Set-NetConnectionProfile -interfacealias" vEthernet (DockerNAT) "-NetworkCategory Private" на свій власний ризик.
Містер Слім

54

Моє рішення полягало у відключенні від VPN; це було причиною проблеми


2
Я також вирішив цю проблему після відключення від моєї VPN, що, звичайно, я не намагався, поки не вичерпав усі інші можливості. зітхання
Кіркая

Я шукав пів дня і мені просто потрібно було відключитися від VPN .. Дякую!
HELPME

1
Просте рішення .. Дякую!
MilanYadav

1
Дякую! Я забув свого VPN-клієнта, який автоматично запускається при завантаженні Windows.
Фабіо Формоза

Дякую! Я дотримувався різних інструкцій без успіху, але одного разу відключившись від VPN, він працював !!!
Меїр

27

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

Це в кінцевому підсумку НЕ пов'язане з вбудованим брандмауером Windows.

Виправлення

  1. Зніміть прапорці для спільного використання файлів і принтерів для мереж Microsoft від мережевого адаптера vEthernet (DockerNAT) (з'єднання можна знайти в Центрі мереж і обміну Windows ).
  2. Повторіть перевірку та переконайтесь, що вона включена.

Працювали для мене чудово, дякую!
LewisCheng-MSFT

Мабуть, це працювало і для мене. Я перевірив брандмауер Windows, і в мене вже було правильне правило, ймовірно, попередньо встановлене самим docker.
Девіде Інгліма

Було б добре знати, чому це працює і в чому полягає справжня першопричина проблеми. Здається, трапляється часто.
Джейсон Роу

Проблема у тому, що вам доведеться це зробити ще раз після перезавантаження системи
AFD

@AFD, цікаво, у мене немає такої проблеми.
jiminikiz

22

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

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

У цей момент мені вдалося повторно поділити диск C в налаштуваннях Докера. Я не маю поняття, чому це спрацювало, але це не проблема брандмауера, яка вже має запис для DockerSmbMount.


ЯК це невтішна помилка .. Я шукав весь день дякую
FAjir

це майже спрацювало. я не отримую повідомлення про брандмауер, але прапорець не залишається галочкою!
jokab

17

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

Зображення 1

Зображення 2


1
Працювали для мене! Але інтерфейс виглядав інакше в Kaspersky ES 10. Він може бути знайдений в такий спосіб: вкладка Налаштування> Виберіть «Firewall» на лівій стороні> натисніть кнопку «правила мережевих»> Виберіть «TCP підключення до локального»> Виберіть Edit у верхній частині
Саймон Б.

1
Замість того, щоб видалити 445 зі списку, змінив "Дія" з "Блокований" на "За правилами програми", і це працювало для мене. Тож я думаю, вилучення 445 з "Місцевих служб (TCP)" та створення нового правила "Докер SMB Mount" з дією "За правилами програми" також має працювати.
Джімсон Каннантара Джеймс

Цей працював на мене. Мені довелося призупинити Касперського, а потім спробувати ввімкнути спільний диск на Docker для Windows.
gdyrrahitis

Дякуємо, що поділилися рішенням для Касперського. Це працювало для мене.
НАМИТ

У мене була така ж проблема і я дотримувався matthewhorne.me/…
Ентоні О.

11

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

Виконайте таку команду в PowerShell:

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

Змініть ім'я в лапках, якщо віртуальне мережеве з'єднання вашого пристрою Hyper-V називається чимось іншим.


Працювало як шарм для мене. Запустив команду в сеанс Powershell 6 на версії Windows 10 v10.0.17763, збірку 17763, Docker v18.09.2, збірці 6247962, та запускає Norton Security Suite.
Адам

9

Моя проблема полягала в тому, що VPN Cisco Anyconnect втручався у внутрішню мережу докера

Щоб виправити це, перейдіть до:
Налаштування 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, вам потрібно вимкнути "Невидимість в локальній мережі" та, ймовірно, "Перемикач через Інтернет" .

Якщо ви це зробили, це повинно працювати навіть із активним VPN.

Клієнт NordVPN


2
Дякую! Це вирішило це для мене. Я застряг 2 тижні!
user3034

1
Дуже дякую! Кілька годин знизилися від розігрування мережевих налаштувань, це єдине, що працювало для мене!
Ще один розбиття фізика

6

Це залежить від того, який брандмауер ви встановили. У моєму випадку я відключив вбудований брандмауер Windows, і я використовую ESET Smart Security, щоб мої правила виглядали так:

  • Створіть правило для підключення IN, оскільки ви повинні дозволити Docker підключитися до свого хоста та встановити його дозволити

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

  • Налаштуйте порт правильно, як це пояснено в документах, що означає 445:

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

  • Налаштування віддаленої IP-адреси:

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

Можливо, це не відповідь, оскільки це не пов’язано з брандмауером Windows, але може дати зрозуміти, що робити.


Дякую Рейньє - я дотримувався того, що ти показуєш якнайкраще в еквіваленті брандмауера Windows. - загальна вкладка = "Увімкнено" - вкладка "Протоколи і порти" = протокол TCP і локальний порт = 445 - вкладка "Обсяг" = "Віддалений ip = 10.0.75.2", але отримали те саме повідомлення про помилку. Дозволено всі порти та IP-адреси - однаковий результат. Ще одне правило має перевагу?
Ribeye

Буде краще, якщо ви додасте кілька скріншотів того, що ви маєте, тому що я ненавиджу брандмауер Windows і ніколи раніше не
займаюся

як можна вибрати додаток "Система"?
Küzdi Máté

Не потрібно додавати додаток "Система", але вам потрібно переконатися, що мережа DockerNAT довіряється відомим мережам з діапазоном IP 10.0.75.1/24
Мігель Феррес,

Ми не використовуємо ESET: /
Ionel Lupu

4

Ніщо з перерахованого вище не працювало для мене.

Нарешті, фокус був відкрити властивості мережі "vEthernet (DockerNAT)" та поставити галочку "Hyper-V Extensible Virtual Switch" внизу списку на вкладці "Мережі".

Не впевнений, чи справді це виправлення чи це просто якимось чином скинути мережевий адаптер для мене ... але це спрацювало!


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-isissue-with-host-volumes/


1
«Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. "
McGrady

Ключовим тут для мене стала приватна мережа докера.
Майк Карон

3

Після останнього оновлення Windows 10 моїм диском G перестали ділитися з Docker. У мене з'явилася така ж проблема, кажучи, що її було заблоковано брандмауером Windows при спробі повторного використання.

Тоді я спробував вирішити цю проблему за допомогою декількох пропозицій, але я не можу вирішити цю проблему після цього, я спробував скинути облікові дані нижче Спільних дисків, і моя проблема була вирішена.

Тож якщо ви хочете, то можете спробувати зробити це -

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


3

Все, що всі розміщували, НЕ РОБОТИ для мене.

ЦЕ РОЗДІЛ.

Я встановив реліз EDGE. Потім я перейшов до ЗАХІДНИКА ВІННІВ і відключив брандмауер для DOCKER NAT. (не мій власний адаптер Ethernet, а лише докер нат)

Одного разу я відключив захисник Windows / брандмауер ТАК таким чином він працював чудово.

тьфу. дуже сподівається, що допоможе комусь із вас!


відключення брандмауера для конкретного з'єднання (dockerNat) допомогло. Велике спасибі!
Мафу

Поясніть, будь ласка, як саме ви відключили брандмауер Windows Defender для конкретного мережного адаптера / з'єднання?
вулкан ворон

3

У моєму випадку я відключив "Блокувати TCP 445" на брандмауері Windows Defender із розширеною безпекою, і він працював. Потім увімкнули його знову після встановлення спільних дисків на Docker.

налаштування Block TCP 445

налаштування спільних дисків


Я щойно зрозумів, що я особисто додав це правило брандмауера ще коли просочився інструмент для злому NSA. Дякую!
Danny Z

2

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

Відкрийте F-безпечний клієнт і натисніть " Завдання "

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

Виберіть " Дозволити запуск програми "

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

Виберіть зі списку "com.docker.service" і натисніть " Видалити "

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

Після цього перезапустіть клієнт Docker і спробуйте подати заявку на спільний доступ до файлів.

Також дуже хороший посібник з усунення несправностей тут: Помилка: брандмауер блокує обмін файлами між Windows та контейнерами


2

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


1
Я буквально спробував усе інше, тільки це рішення працювало на мене. Спасибі людино!
Charis Moutafidis

2

Що стосується AVG Internet Security, ввімкнення режиму спільного доступу до Інтернету в налаштуваннях брандмауера зробило для мене трюк.

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


2

Навіть після того, як переконався, що правило вхідного брандмауера встановлено належним чином, навіть після видалення та перевстановлення служби обміну файлами та друку, це не працювало для мене.

Рішення: поверх цього я також повинен був зробити третю справу. Мені довелося деактивувати прапорець Попередження вхідних з'єднань під час перебування в загальнодоступній мережі в певних налаштуваннях брандмауера для загальнодоступних мереж. Після цього він почав працювати і для мене. Дивіться скріншоти, додані в кінці цього повідомлення.

Не знаю, як довго ця опція вже існує. Зараз я працюю над програмою Win 10 Pro 1709 16299.402.


1. Відкрийте конкретні налаштування брандмауера для загальнодоступних мереж Відкрийте конкретні налаштування брандмауера для загальнодоступних мереж

2. Зніміть цей прапорець Зніміть цей прапорець


2

Використовуючи Kaspersky Internet Security, ви можете це легко вирішити, змінивши vEthernet (DockerNAT)тип мережного адаптера на Trusted network.

Налаштування> Захист> Брандмауер> Мережі> vEthernet (DockerNAT)> Виберіть "Довірена мережа"

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


2

25 січня 2020 року

Здається, це проблема в старих версіях, я встановив останню версію:

Docker version 19.03.5, build 633a0ea

і він працював на мене без будь-якої конфігурації.

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


1

Це (посилання нижче), здається, найкраще виправлення, яке я знайшов поки що. Він стійкий через перезавантаження. Найкраще це пояснюється тут: https://gist.github.com/biggyspender/8b5b2ed9ff63de31045d41304e3915b3

Мережевий мережевий інтерфейс vEthernet, здається, динамічно створюється щоразу, коли система запускається, і створюється в групі "Загальнодоступні", на відміну від групи "Приватна" (де вона працює). Редагування в одному зі скриптів запуску Docker (викликається посиланням вище) автоматизує команду / виправлення командних оболонок, зазначені Девідом Тезаром вище ....

Мені пощастило додати функцію до сценарію, а не редагувати сценарій та змінити "Внутрішній" на "Приватний".


1

Якщо не працює вищезазначене, переконайтеся, що ви не підключені до VPN . Саме так сталося зі мною, я був підключений до VPN за допомогою клієнта Cisco AnyConnect, також переконайтеся, що ви встановили статичний DNS в налаштуваннях докера.


Якщо вам потрібні обидва (VPN AnyConnect і Докер), см мій коментар stackoverflow.com/a/58406873/9064636
Аверелл

1

Я спробував усе, що перераховано тут, і на https://github.com/docker/for-win/isissue/360

Ніщо не працювало для мене.

Я запускаю своє середовище розробників на контейнері docker, і, перебуваючи на корпоративному 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.

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

"Нова реалізація файлів: Docker Desktop представляє нову реалізацію файлів, яка використовує гнітки gRPC, FUSE та Hypervisor замість мереж 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 є кандидатом на реліз майбутнього випуску Stable." Тож ризик використання Edge порівняно низький. Або ви можете зачекати наступного стабільного випуску, щоб уникнути всіх цих проблем з брандмауером.



0

Я знайшов це досить легко. Просто перейдіть до мережевих підключень. Ви можете перейти до Панелі управління / Мережі та спільного доступу. Ви знайдете різні з'єднання. Шукати з'єднання Докера. Виберіть, що коли-небудь за замовчуванням. Вибравши мережу, перейдіть до Властивості. У розділі властивостей увімкніть опцію Hyper-V Extensible Virtual Switch . Це допоможе віртуальному контейнеру використовувати мережеву карту.


0

Що я зробив для мене (після декількох годин пробної n-помилки) - це зміна маски підмережі з 255.255.255.240на 255.255.255.0(яка не повинна нічого змінювати).

Як частина пробної помилки n, я зробив усе інше, перелічене в статті, але без жодного успіху .. але останній крок це зробив .. і повернення назад 255.255.255.240не порушує хорошого циклу.

Я визнаю, це не має сенсу .. але це може бути пов'язано з внутрішнім станом, що викликається лише зміною мережі.

У будь-якому випадку, якщо я допоміг лише одному, тоді варто було докласти зусиль.

Docker Desktop edge, 2.0.4.1 (34207)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.