Docker no Windows 10 "driver falhou ao programar a conectividade externa no terminal"


134

Estou tentando usar $ docker-compose up -dpara um projeto e estou recebendo esta mensagem de erro:

ERRO: para a API Não é possível iniciar a API do serviço: o driver falhou ao programar a conectividade externa no nó de extremidade dataexploration_api_1 (8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117): erro ao iniciar o proxy do usuário: mkdir / 2.0.0: Foram encontrados erros ao abrir o projeto.

Gostaria de saber se é talvez a porta? Eu estava tentando a porta 8080 anteriormente. O projeto foi originalmente configurado em um mac e eu clonei o repositório do gitHub.


Por favor, adicione um link ao ticket do github para que todos possamos ir até lá e fazer uma votação positiva.
PussInBoots

Respostas:


270

Recebi a mesma mensagem de erro no Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0 usando o Windows Powershell x86 no modo de administrador.

A solução foi simplesmente reiniciar o Docker.


Eu uso a janela de encaixe Versão 18.03.0-ce-win59 (16762) no Windows 10 Professional. A imagem do Docker é jenkins / jenkins: 2.107.2. Após puxar, eu uso este comando para instalar docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2. Após concluir a configuração de jenkins, uso docker stop myJenkinsem outra janela de comando e desligo o Windows 10. O host 10. Quando inicio o Windows 10, que inicia o docker automaticamente, utilizo o comando docker start myJenkinse recebo a mensagem familiar. No entanto, reiniciar janela de encaixe resolver a problema :)
Charles Wu

1
Alguém sabe por que isso acontece? Reiniciar o docker parece hacky, existe uma maneira de resolver isso corretamente?
Storm Muller

A mesma correção funcionou para mim em março de 2019. Usando o Docker Desktop Versão 2.0.0.3 (31259) Canal: stable Build: 8858db3 Cliente: Docker Engine - Versão da comunidade: 18.09.2 Versão da API: 1.39 Versão da versão: go1.10.8 Git commit: 6247962 Construído: Sun 10 de fev 04:12:31 2019 OS / Arch: windows / amd64 Experimental: false Win 10 Versão 10.0.18346.1 (versão rápida da pré-versão)
JohnC

tinha o mesmo problema em um Mac e reiniciar a janela de encaixe também a corrigiu ... jesus Eu deveria ter verificado sua resposta antes de reinstalar todo o ambiente da janela de encaixe localmente ....: D cheers mate
Sosomqk

67

Se acontecer uma vez, reiniciar o Docker fará o trabalho. No meu caso, isso acontecia toda vez que eu reiniciava meu computador.

Nesse caso, desative a Inicialização rápida ou você provavelmente reiniciará o Docker toda vez que o computador for iniciado. Esta solução foi obtida daqui


6
Isso deve ser aceito como resposta. Restart funciona, mas quando você precisa fazê-lo cada vez que ela se torna desagradável
Vitalii

Eu recebi esse erro ao alternar usuários no Windows 10
Vasko

58

Simplesmente reiniciar o Docker não resolveu o problema para mim no Windows 10.

No meu caso, resolvi o problema com as etapas exatas abaixo:

1) Feche o "Docker Desktop"

2) Execute os comandos abaixo:

net stop com.docker.service
net start com.docker.service

3) Inicie o "Docker Desktop" novamente

Espero que isso ajude alguém.


3
Isso funciona para mim depois de tentar apenas reiniciar o docker! Além disso, não se esqueça de executar este par com privilégios de administrador
Gad Wissberg

Funcionou, mas não tenho privilégios de administrador o tempo todo :(
Hassan Tareq

3
Trabalhou para mim reiniciar o serviço janela de encaixe, geralmente apenas um reinício área de trabalho janela de encaixe foi suficiente mas não desta vez ... estivador no Windows 10 é muito doloroso (latências, erros, doc, ...)
FAjir

Isso funcionou! Deve ser a resposta realmente aceita. Obrigado
Dominik K

Trabalhou para mim, thnx!
G.Mast 20/01

9

Também recebi esse erro. Se você deseja saber o principal motivo pelo qual o erro ocorre, é porque o docker já está executando um contêiner semelhante para resolver o problema (evite reiniciar o Docker):

docker container ls

Você tem algo parecido com:

CONTAINER ID        IMAGE               COMMAND             CREATED
1fa4ab2cf395        friendlyhello       "python app.py"     28 seconds ago

Esta é uma lista dos contêineres em execução. Pegue o ID do CONTAINER (copie Ctrl+ C)

Agora você precisa finalizar o processo (e deixar executar outra imagem) executar este comando.

docker container stop <CONTAINER_ID>

E isso é tudo! Agora você pode criar o contêiner.

Para mais informações, visite https://docs.docker.com/get-started/part2/


7

Estou ciente de que já existem muitas respostas, mas nenhuma delas resolveu o problema para mim.
Em vez disso, me livrei dessa mensagem de erro redefinindo o docker para os padrões de fábrica :

insira a descrição da imagem aqui


Você teve algum relatório de erro do Docker antes de fazer isso, porque no meu caso, ocorreu algo como um erro com a sugestão de redefinir os padrões de fábrica.
Theodosios Asvestopoulos

Não, @TheodosiosAsvestopoulos, não recebi esse pop-up.
Jasie

Estranho, tive o mesmo problema novamente hoje, o reinício do docker não ajudou. Eu não queria redefinir os padrões de fábrica novamente, porque extraímos imagens muito grandes, então fechei o Docker Desktop e o abri novamente e funcionou (parece ser uma ação diferente do que apenas para reiniciá-lo).
Theodosios Asvestopoulos

6

Normalmente, esse erro ocorre quando você está tentando iniciar um contêiner, mas as portas que o contêiner precisa estão ocupadas, geralmente pelo mesmo Docker, como resultado de um processo ruim mais recente para parar.

Para mim, a solução é:

  1. Abra o CMD do Windows como administrador, digite netstat -oanpara localizar o processo (o Docker é esse processo) que está ocupando sua porta:

No meu caso, minhas portas docker são 3306 6001 8000 9001.

  1. Agora precisamos liberar essas portas, então vamos matar esse processo pelo PID (colum PID), digite

    TASKKILL /PID 9816 /F
    
  2. Reinicie a janela de encaixe.

  3. Seja feliz.

Saudações.


2

No meu caso, o problema era que o contêiner do docker (Nginx) usa 80 portas e o IIS usa o mesmo. Configurar outra porta no IIS resolve o problema


1

Na maioria dos casos, o primeiro caso em que você deve pensar é que existe um serviço antigo executando e usando essa porta. No meu caso, desde que eu mude o nome da imagem, ao usar o docker-compose para parar (para cima), ele não interromperá o contêiner antigo (serviço), o chumbo para o novo contêiner não poderá ser iniciado.


0

Uma resposta tardia, mas vou deixar aqui, pode ajudar outra pessoa. No Mojave do Mac, depois de muitas reinicializações do Mac e do Docker, eu precisei sudo apachectl stop.


0
  • A maneira mais simples de resolver isso é Reiniciando a janela de encaixe. Mas, em alguns casos, pode não funcionar, mesmo que você não tenha nenhum contêiner em execução na porta. Você pode verificar os contêineres em execução usando o docker pscomando e pode ver todos os contêineres que não foram limpos, mas foram encerrados antes de usar o docker ps -acomando.

Imagine que existe um contêiner com o ID do contêiner 8e35276e845e. Você pode usar o comando docker rm 8e35276e845eou docker rm 8e3finalizar o contêiner. Observe que as três primeiras cadeias de caracteres são o ID desse ID de contêiner do docker específico. Assim, de acordo com o cenário acima 8e3, é o ID 8e35276e845e .

  • Se a reinicialização não funcionar, tente alterar as portas dos serviços no arquivo docker-compose.yml e, de acordo com a porta apache, você deverá alterar a porta do v-host (se houver alguma). problema.

Ex:

    build:
      context: ./apache
      dockerfile: Dockerfile
    working_dir: /var/www/
    volumes:
      - .:/var/www
    networks:
      - app-network
    ports:
      - 8082:80
    depends_on:
      - mysql_db

deve ser mudado para

apache_server:
    build:
      context: ./apache
      dockerfile: Dockerfile
    working_dir: /var/www/
    volumes:
      - .:/var/www
    networks:
      - app-network
    ports:
      - 8083:80
    depends_on:
      - mysql_db

e o host v específico também precisa ser alterado,

Ex (de acordo com o cenário acima):

<VirtualHost *:80> 
    ProxyPreserveHost On
    ServerAlias phpadocker.lk
    ProxyPass / http://localhost:8083/
    ProxyPassReverse / http://localhost:8083/
</VirtualHost>

Isso irá ajudá-lo a resolver o problema acima.


0

Para muitos usuários de Windows por aí que têm o mesmo problema, sugiro reiniciar o computador também, porque na maioria das vezes (pelo menos para mim) reiniciar apenas o Docker não funciona. Então, sugiro que você siga as seguintes etapas:

  1. Reinicie seu PC.
  2. Em seguida, inicie o PowerShell como administrador e execute:

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

  3. Depois disso, reinicie o Docker.

Após concluir estas etapas, você poderá executar sem problemas. Espero que ajude.

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.