Configurações do Firewall do Windows para permitir que o Docker for Windows compartilhe a unidade


139

O Firewall do Windows está bloqueando minha tentativa de permitir que o Docker for Windows compartilhe C: na máquina com Windows 10.

Funciona bem quando o Firewall do Windows está desativado. Quando começa

Um firewall está bloqueando o compartilhamento de arquivos entre o Windows e os contêineres. Consulte a documentação para mais informações.

A documentação diz

Você não precisa abrir a porta 445 em nenhuma outra rede. Por padrão, permita conexões à porta 10.05.75.1 445 (o host do Windows) a partir da 10.0.75.2 (a máquina virtual).

Estou "pesquisando" tentando descobrir como fazer isso - alguém pode aconselhar?


20
A VPN Cisco AnyConnect estava bloqueando isso para mim, depois de sair da VPN, funcionou.
Chris Lobo

1
Eu tenho a Cisco me bloqueando, mas PRECISO estar na VPN e compartilhar o Docker ... Alguma idéia?
Nicolas Irisarri

1
Eu segui este para o Norton Firewall e ele funcionou perfeitamente stackoverflow.com/questions/45159006/...
Robin Sanner

Veja abaixo post que responde a esta pergunta superuser.com/questions/1470821/…
Aravind S

1
@ NicolasIrisarri: Resolvi o mesmo problema (preciso usar os dois ao mesmo tempo). A solução é usar uma sub-rede diferente daquela protegida pelo AnyConnect. Veja minha resposta abaixo: stackoverflow.com/a/58406873/9064636
Averell

Respostas:


151

Na verdade, você não precisa compartilhar a unidade C, mas apenas reinstalar (ou potencialmente desmarcar - clique em OK - depois marque) o serviço de compartilhamento de arquivos e impressões na placa de rede virtual Hyper-V. Veja este artigo.

Além disso, se houver restrições nos seus perfis de rede (público), considere alterar a "rede não identificada" padrão da placa "vEthernet (DockerNAT)" para privada por meio deste comando do PowerShell antes de fazer o seguinte:

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

4
Eu tive que fechar o Docker para Windows e reiniciá-lo depois de executar o comando Powershell acima. Você pode executar Get-NetConnectionProfilepara garantir que a DockerNATrede está na Privatecategoria
seangwright

1
O link para blog.olandese.nl/2017/05/03/ resolveu meu problema. Muito Obrigado!
Andrie

1
Nenhuma dessas funcionou para mim, então eu tentei: stackoverflow.com/a/47837191/1895627 #
Andrei

3
Não consigo desinstalar isso, recebo erro 0x80071779, tentei desativar -> ativar. Também firewall desativado ... Eu também tentei definir como privado, ainda não está funcionando, alguma idéia?
BrunoLM

2
desinstalar o serviço de compartilhamento de arquivos e impressoras:Disable-NetAdapterBinding -Name "vEthernet (DockerNAT)" -ComponentID ms_server
Marcel DB

73

Ok, então, depois de executar o mesmo problema, encontrei uma solução.

Isto é o que eu fiz:


Etapa 1: Abra o ESET. Depois clique em Setup

clique em configuração

Etapa 2: Clique em Proteção de rede

clique em proteção de rede

Etapa 3: Clique no assistente de solução de problemas

clique em assistente de solução de problemas

Etapa 4: Encontre a Comunicação 10.0.75.2 (configuração padrão do docker IP) Basta verificar qual o intervalo de IPs definido nas configurações do docker. Em seguida, procure o IP que reside nesse intervalo.

encontre a conexão

Etapa 5: clique no botão Desbloquear , e você deverá receber esta tela.

clique em desbloquear

Isso resolveu o problema por mim mesmo.

Você pode então acessar as Regras e verificar a regra que foi adicionada.


PS: Este é o meu primeiro post, desculpe por qualquer procedimento incorreto.


Esta postagem foi extremamente útil para mim, porque ao adicionar regras como explicadas na documentação, os endereços IP mencionados eram diferentes. Goz bezig!
DelphiLynx 12/10

11
Para todos os usuários da ESET, esta é a solução, obrigado!
cudacoder

2
Uma excelente contribuição de Franche Van Den Berg, obrigado. Essa é realmente a solução para usuários da ESET e muito elegante.
Vacilando

Para a ESET, verifique se a rede docker está na zona confiável
WhiteKnight

Essa solução exata funcionou para mim na perfeição. Obrigado!
Khalid

63

Somente esta solução me ajuda a:

  • Vá para Gerenciador Hyper-V -> Gerenciador de comutador virtual -> DockerNAT -> Tipo de conexão: alterar de interno para privado, aplicar, alterar de volta para interno, aplicar
  • Reinicie o MobyLinuxVM
  • Reinicie o Docker
  • Defina o perfil de rede do Docker como 'Privado'. Executar comando no PowerShell como administrador
    Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private
  • Redefinir compartilhamento de arquivos e impressoras para redes Microsoft na conexão DockerNAT
  • Vá para Docker -> Configurações -> Unidades compartilhadas e compartilhe C:

6
vale a pena mencionar que Set-NetConnectionProfiledeve ser executado no PowerShell como administrador e não como um Cmd normal. Ele funciona muito bem para mim, mas o adaptador Ethernet ainda éunidentified network
DarkMukke

3
bombardeio de tapetes FTW. Nenhuma das outras soluções funcionou. Obrigado.
David West

Isso funcionou 100%. Nenhuma das outras opções funcionou dessa vez e a solução definitiva foi definir a rede como Privada.
Lordg

Valeu cara! Você salvou o meu dia. Essa é apenas uma maneira de corrigir esse maldito bug.
TimeCoder

Trabalhou para mim. A maioria das outras soluções não o fez. certifique-se de seguir TODAS as etapas. Perdi a etapa "Definir perfil de rede do Docker como 'Particular' Set-NetConnectionProfile -interfacealias" vEthernet (DockerNAT) "-NetworkCategory Private" passo por minha conta e risco.
Slim

54

Minha solução foi desconectar da VPN; que estava causando o problema


2
Também resolvi o problema depois de me desconectar da minha VPN, que, é claro, não tentei até esgotar todas as outras possibilidades. suspiro
Kirkaiya

Eu estava procurando metade do dia e só precisava me desconectar da VPN .. Obrigado!
HELPME

1
Solução simples .. Obrigado!
MilanYadav 19/02/19

1
Obrigado! Esqueci meu cliente VPN que inicia automaticamente na inicialização do Windows.
Fabio Formosa

Obrigado! Segui instruções diferentes, sem sucesso, mas uma vez desconectado da VPN, funcionou !!!
Meir

27

Eu não estava usando nenhum firewall de terceiros ao encontrar esse erro. Eu estava convencido de que era um problema do Firewall do Windows, apesar de desabilitar o Firewall do Windows não funcionar para mim. Finalmente encontrei este post de blog depois de muita pesquisa: Erro no Docker no Windows 10: um firewall está bloqueando o compartilhamento de arquivos ...

Acabou NÃO tendo a ver com o Firewall do Windows incorporado.

O conserto

  1. Desmarque a opção Compartilhamento de arquivos e impressoras para redes Microsoft no adaptador de rede vEthernet (DockerNAT) (você pode encontrar a conexão no Centro de Rede e Compartilhamento do Windows ).
  2. Verifique novamente e verifique se está ativado.

Funcionou para mim perfeitamente, obrigado!
LewisCheng-MSFT

Aparentemente, isso funcionou para mim também. Eu verifiquei o Firewall do Windows e já tinha a regra correta, provavelmente pré-instalada pelo próprio docker.
Davide Inglima

Seria bom saber por que isso funciona e qual é a causa raiz real do problema. Parece acontecer com freqüência.
Jason Rowe

O problema é que você tem que fazê-lo novamente após a reinicialização do sistema
AFD

@ AFD, interessante, eu não tenho esse problema.
Jiminikiz

22

Minha unidade C parou de ser compartilhada com o Docker após uma atualização recente do Windows 10. Eu estava tendo o mesmo problema dizendo que foi bloqueado pelo firewall do Windows ao tentar compartilhá-lo novamente.

Examinando as soluções acima, encontrei algo que funcionou para mim mais simples do que qualquer outra coisa que vi nesta página. No Painel de controle \ Todos os itens do painel de controle \ Centro de rede e compartilhamento , na conexão vEthernet (DockerNAT) , desmarquei a propriedade Compartilhamento de arquivos e impressoras para redes Microsoft e salvei a configuração. Depois, verifiquei a propriedade novamente para reativá-la e a salvei novamente.

Nesse ponto, consegui compartilhar novamente a unidade C nas configurações do Docker. Não sei por que isso funcionou, mas não foi um problema de firewall, que já possui uma entrada para o DockerSmbMount.


WOW este é um bug decepcionante .. Eu procurei o dia todo obrigado longa
FAjir

isso quase funcionou. Não recebo a mensagem do firewall, mas a caixa de seleção não permanece marcada.
Jokab

17

Eu tive esse problema com o Kaspersky; desligar o Kaspersky funcionou, então eu sabia que era o firewall. No meu caso, a Kaspersky já estava bloqueando a porta 445 por algum motivo. Eu tive que ir para Regras de pacotes para o firewall, serviços locais (TCP) e remover 445 da lista de portas de blocos.

Imagem 1

Imagem 2


1
Trabalhou para mim! Mas a interface do usuário parecia diferente no Kaspersky ES 10. Pode ser encontrada assim: guia Configurações> selecione "Firewall" no lado esquerdo> clique no botão "Regras de pacotes de rede"> selecione "Conexão TCP local"> selecione Editar na parte superior
Simon B.

1
Em vez de remover 445 da lista, alterei 'Action' de 'Blocked' para 'By Application Rules' e funcionou para mim. Portanto, acho que remover 445 de 'Serviços locais (TCP)' e criar uma nova regra 'Docker SMB Mount' com a ação 'Por regras de aplicativo' também deve funcionar.
Jimson Kannanthara James

Este funcionou para mim. Tive que pausar o Kaspersky e tentar ativar a unidade compartilhada no Docker for Windows.
Gdyrrahitis # 1 de

Obrigado por compartilhar a solução do Kaspersky. Funcionou para mim.
Namit

Eu tive o mesmo problema e segui matthewhorne.me/…
Anthony O.

11

Para máquinas Windows 10 em redes de domínio, ao criar o adaptador Ethernet virtual Hyper-V, ele é categorizado como uma rede pública. É necessário alterá-lo para uma rede privada para permitir as regras mais relaxadas do Firewall do Windows e, portanto, permitir o compartilhamento de arquivos.

Execute o seguinte comando no PowerShell:

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

Altere o nome entre aspas se a conexão de rede Hyper-V virtual da sua máquina for chamada de outra coisa.


Caiu como uma luva para mim. Execute o comando em uma sessão do Powershell 6 em um Windows 10 v10.0.17763, compilação 17763, Docker v18.09.2, compilação 6247962 e execute o Norton Security Suite.
Adam

9

Meu problema foi que o Cisco Anyconnect VPN interferiu na rede interna do docker

Para corrigir isso, vá para:
Cisco Anyconnect Settings> Preferences> checkAllow local (LAN) access when using VPN


Isso funcionou para mim quando as sugestões de Compartilhamento de Impressão de Arquivos não. A conexão Allow local (LAN) access when using VPNjá estava marcada, então eu a desmarquei, desconectei, verifiquei novamente a opção e reconecte-me à VPN. O Docker para Windows aplicou o compartilhamento de unidade conforme desejado.
Aaron

Não funcionou para mim, tive que desconectar o Cisco AnyConnect para compartilhar unidades. Alguma ideia?
Jack

Aparentemente, nossos guerreiros da rede corporativa ter assegurado 0.0.0.0/0, por isso estou sem sorte :-(
Jack

8

Conforme indicado em outra resposta, o Docker não funciona bem com uma VPN. Se você estiver usando o Nordvpn, precisará desativar "Invisibility on LAN" e provavelmente "Internet Kill Switch" .

Se você fez isso, ele deve funcionar mesmo com a VPN ativa.

NordVPN Client


2
Obrigado! Isso resolveu para mim. Fiquei preso por 2 semanas!
user3034

1
Muito obrigado! Várias horas no ralo de brincar com as configurações de rede, esta é a única coisa que funcionou para mim!
AnotherShruggingPhysicist

6

Isso depende de qual firewall você instalou. No meu caso, desabilitei o Firewall do Windows interno e estou usando o ESET Smart Security para que minhas regras se pareçam com:

  • Crie uma regra para a conexão IN, pois você deve permitir que o Docker se conecte ao seu host e defina-o como Allow

insira a descrição da imagem aqui

  • Configure a porta corretamente, conforme explicado em docs, o que significa 445:

insira a descrição da imagem aqui

  • Configure o endereço IP remoto:

insira a descrição da imagem aqui

Talvez essa não seja a resposta, pois não está relacionada ao Firewall do Windows, mas pode lhe dar uma pista do que fazer.


Obrigado Reynier - Segui o que você mostra da melhor maneira possível no equivalente do Firewall do Windows. - Guia Geral = "Ativado" - Guia Protocolos e Portas = Protocolo TCP e porta local = 445 - Guia Escopo = IP remoto = 10.0.75.2 Mas recebi a mesma mensagem de erro. Permitidas todas as portas e endereços IP - mesmo resultado. Outra regra está tomando precedência?
Ribeye

Será melhor se você adicionar alguns screenshots do que você porque eu odeio Firewall do Windows e nunca lidar com isso antes ...
ReynierPM

como você pode selecionar o aplicativo "System"?
Küzdi Máté 05/04

Não é necessário adicionar o aplicativo "Sistema", mas você deve verificar se a rede DockerNAT é confiável em redes conhecidas com intervalo de IP 10.0.75.1/24
Miguel Febres

Não estamos usando o ESET: /
Ionel Lupu

4

Nenhuma das opções acima funcionou para mim.

O que finalmente fez o truque foi abrir as propriedades da rede "vEthernet (DockerNAT)" e marcar a caixa "Comutador virtual extensível Hyper-V" na parte inferior da lista, na guia "Rede".

Não tenho certeza se essa é a correção real ou se de alguma forma redefinir o adaptador de rede para mim ... mas funcionou!


4

Parece que muitos têm esse problema ao executar o Cisco AnyConnect. Eu tenho o mesmo problema e aqui está como eu resolvi:

A causa: A sub-rede que está sendo usada pelo Docker está na lista de Rotas protegidas gerenciadas pelo Cisco AnyConnect (acredito que esta lista seja gerenciada pelo administrador da sua VPN).

A solução: Mude a sub-rede usada pelo Docker para não se sobrepor à lista que está sendo gerenciada pelo AnyConnect.

Por exemplo, no meu caso, mudei de 10.0.75.0 (sobreposto com 10.0.0.0/8) para 172.31.0.0/28. insira a descrição da imagem aqui


3

Eu tive o mesmo problema e tentei todas as correções - e aconteceu que mais de uma era necessária:

  • Adicionar uma regra de firewall (Norton Security para mim)
  • Tornar a rede privada
  • Compartilhe a unidade

Escrevi uma explicação completa em http://kajabity.com/2017/08/unblock-docker-for-windows-firewall-issues-with-host-volumes/


1
“Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. As respostas somente para links podem se tornar inválidas se a página vinculada for alterada. ”
McGrady

A chave aqui para mim foi tornar a rede docker privada.
Mike Caron

3

Minha unidade G parou de ser compartilhada com o Docker após uma atualização recente do Windows 10. Eu estava tendo o mesmo problema dizendo que foi bloqueado pelo firewall do Windows ao tentar compartilhá-lo novamente.

Tentei resolver esses problemas com algumas sugestões, mas não consigo resolver esse problema depois que tentei redefinir credenciais abaixo de unidades compartilhadas e meu problema foi resolvido.

Então, se você quiser, pode tentar fazer isso -

insira a descrição da imagem aqui


3

Tudo o que todos postaram NÃO funcionou para mim.

ISSO FEZ.

Eu instalei a versão EDGE. Fui ao WINDOWS DEFENDER e desabilitei o firewall do DOCKER NAT. (não meu adaptador ethernet atual, apenas o docker nat)

Uma vez que eu desabilitei o Windows Defender / firewall dessa maneira, funcionou bem.

ugh. realmente espero que ajude alguns de vocês!


desativar o firewall para conexão específica (dockerNat) ajudou. Muito obrigado!
Mafu

Explique como exatamente você desabilitou o firewall do Windows Defender para adaptador / conexão de rede específica?
corvo vulcan

3

No meu caso, desativei o "Bloco TCP 445" no Windows Defender Firewall com Segurança Avançada e funcionou. Em seguida, habilite -o novamente após definir unidades compartilhadas no Docker.

configuração do bloco TCP 445

configuração de unidades compartilhadas


Acabei de perceber que adicionei pessoalmente essa regra de firewall quando as ferramentas de hackers da NSA vazaram. Obrigado!
Danny Z

2

Eu tive o mesmo problema com o F-secure, o DeepGuard estava bloqueando o serviço Docker. Minha solução foi:

Abra o cliente F-secure e clique em " Tarefas "

insira a descrição da imagem aqui

Escolha " Permitir que um programa seja iniciado "

insira a descrição da imagem aqui

Escolha na lista "com.docker.service" e pressione " Remover "

insira a descrição da imagem aqui

Depois disso, reinicie o cliente Docker e tente solicitar o compartilhamento de arquivos.

Também é um guia muito bom para solucionar problemas aqui: Erro: um firewall está bloqueando o compartilhamento de arquivos entre o Windows e os contêineres


2

Eu tive o mesmo problema com o firewall, não me permitindo compartilhar minha unidade C. Eu tentei todas as soluções listadas acima e nada funcionou para mim. Desinstalei completamente o docker da minha máquina. Control Panel\Programs\Programs and Features -> select Docker for Windows -> Uninstall
Depois, acesse o site do docker e clique emGet Docker for Windows (Stable)
Depois disso, eu pude compartilhar a unidade C


1
Eu literalmente tentei de tudo, apenas essa solução funcionou para mim. Valeu cara!
Charis Moutafidis 18/09/19

2

Para o AVG Internet Security, ativar o Modo de compartilhamento de conexão com a Internet nas configurações do Firewall fez o truque para mim.

insira a descrição da imagem aqui


2

Mesmo depois de garantir que a regra do firewall de entrada esteja configurada corretamente e mesmo depois de desinstalar e reinstalar o Serviço de compartilhamento de arquivos e impressões , não funcionou para mim.

Solução: além disso, eu também tive que fazer uma terceira coisa. Eu tive que desativar a caixa de seleção Impedir conexões de entrada quando estiver em uma rede pública nas configurações específicas do firewall para redes públicas. Depois de fazer isso, começou a trabalhar para mim também. Veja as capturas de tela anexadas no final desta mensagem.

Não sei há quanto tempo essa opção já existe. Atualmente, estou trabalhando no Win 10 Pro 1709 16299.402.


1. Abra configurações específicas de firewall para redes públicas Abrir configurações específicas de firewall para redes públicas

2. Desmarque esta caixa de seleção Desmarque esta caixa de seleção


2

Usando o Kaspersky Internet Security, você pode resolver isso facilmente se alterar o vEthernet (DockerNAT)tipo de adaptador de rede para Trusted network.

Configurações> Proteção> Firewall> Redes> vEthernet (DockerNAT)> Selecione "Rede confiável"

insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui


2

25 Jan 2020

Parece, é um problema nas versões antigas, eu instalei a última versão:

Docker version 19.03.5, build 633a0ea

e funcionou para mim sem nenhuma configuração.

insira a descrição da imagem aqui


1

Este (link abaixo) parece ser a melhor solução que encontrei até agora. É persistente nas reinicializações. É melhor explicado aqui: https://gist.github.com/biggyspender/8b5b2ed9ff63de31045d41304e3915b3

A interface de rede do vEthernet parece ser criada dinamicamente sempre que o sistema é iniciado e é criada no grupo 'Público' em vez de no grupo 'Privado' (onde funciona). As edições em um dos scripts de inicialização do Docker (chamadas no link acima) automatizam o comando / correção do powershell observado por David Tesar acima ...

Tive mais sorte em adicionar a função ao script, em vez de editar o script e alterar 'Internal' para 'Private'.


1

Se nenhuma das opções acima funcionar, verifique se você não está conectado a uma VPN . Foi exatamente o que aconteceu comigo: eu estava conectado a uma VPN usando o cliente Cisco AnyConnect, e também certifique-se de definir um DNS estático nas configurações do docker.


Se você precisa tanto (VPN AnyConnect e Docker), ver meu comentário stackoverflow.com/a/58406873/9064636
Averell

1

Eu tentei tudo listado aqui e em https://github.com/docker/for-win/issues/360

Nada funcionou para mim.

Eu executo meu ambiente de desenvolvimento em um contêiner de docker e, enquanto estiver na VPN corporativa (Cisco AnyConnect), preciso montar minha unidade local no contêiner para acessar meus arquivos de projeto.

Aqui está um docker hack que funcionou para mim. Adicione --publish 8000:8000ao seu comando docker run existente.

assim

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

se tornará

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

Verifique se a porta não está sendo usada, caso contrário, você receberá este erro:

Falha na ligação para 0.0.0.0:8000: a porta já está alocada


1

Em resumo, use a versão Edge.

A versão Edge do Docker para Windows desde 2.1.5.0 (2019-11-04) possui uma nova implementação de compartilhamento de arquivos sem exigir modificações no firewall https://docs.docker.com/docker-for-windows/edge-release-notes /

"Nova implementação de compartilhamento de arquivos: o Docker Desktop introduz uma nova implementação de compartilhamento de arquivos que usa soquetes gRPC, FUSE e Hypervisor em vez das redes Samba, CIFS e Hyper-V. A nova implementação oferece desempenho aprimorado de E / S. Além disso, ao usar o novo sistema de arquivos:

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.

"

Você pode baixar a versão de borda: https://download.docker.com/win/edge/Docker%20Desktop%20Installer.exe

Observe que a partir de agora, a versão de borda do 2.1.7.0 será usada para a próxima versão estável: "Nota: O Docker Desktop Edge 2.1.7.0 é o candidato à versão para a próxima versão estável do futuro". Portanto, o risco de usar o Edge é relativamente baixo. Ou você pode esperar pelo próximo lançamento estável, para evitar todos esses problemas de firewall.



0

Achei muito fácil. Basta acessar suas conexões de rede. Você pode acessar o Painel de controle / Rede e compartilhamento. Você encontrará várias conexões. Procure a conexão do Docker. Selecione qual é o padrão. Após selecionar a rede, vá para Propriedades. Na seção de propriedades, ative a opção Switch virtual extensível Hyper-V . Isso ajudará o contêiner virtual a usar a placa de rede.


0

O que isso fez comigo (após várias horas de tentativa e erro) foi alterar a Máscara de sub-rede de 255.255.255.240para 255.255.255.0(o que não deve mudar nada).

Como parte da tentativa-e-erro, eu fiz todo o resto listado no artigo, mas sem sucesso .. mas este último passo foi feito .. e reverter para 255.255.255.240não interrompe o bom ciclo.

Eu admito, não faz sentido .. mas pode estar relacionado a um estado interno que está sendo acionado apenas pela mudança de rede.

Enfim, se eu ajudei apenas um, valeu a pena o esforço.

Docker Desktop edge, 2.0.4.1 (34207)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.