Docker unter Windows 10 "Treiber konnte die externe Konnektivität auf dem Endpunkt nicht programmieren"

134

Ich versuche, es $ docker-compose up -dfür ein Projekt zu verwenden, und erhalte die folgende Fehlermeldung:

FEHLER: für API Die Dienst-API kann nicht gestartet werden: Treiber konnte die externe Konnektivität auf Endpunktdatenexploration_api_1 nicht programmieren (8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117) Beim Aufrufen des Projekts sind Fehler aufgetreten.

Ich frage mich, ob es vielleicht der Hafen ist? Ich hatte zuvor Port 8080 ausprobiert. Das Projekt wurde ursprünglich auf einem Mac eingerichtet und ich habe das Repository von gitHub geklont.

Sockness_Rogers
quelle
Bitte fügen Sie einen Link zum Github-Ticket hinzu, damit wir alle dorthin gehen und es verbessern können.
PussInBoots

Antworten:

270

Ich habe die gleiche Fehlermeldung auf meinem Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0 mit Windows Powershell x86 im Administratormodus erhalten.

Die Lösung bestand darin, Docker einfach neu zu starten.

Jens Christian Eldøy
quelle
Ich Benutzer Docker Version 18.03.0-ce-win59 (16762) unter Windows 10 Professional. Docker Image ist Jenkins / Jenkins: 2.107.2. Nach dem Ziehen verwende ich diesen Befehl, um zu installieren docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2. Nachdem ich Jenkins eingestellt habe, verwende ich docker stop myJenkinsin einem anderen Befehlsfenster und schalte meinen Host Windows 10 aus. Wenn ich Windows 10 starte, das Docker automatisch startet, verwende ich den Befehl docker start myJenkinsund erhalte die vertraute Meldung. Allerdings Neustart Docker zu lösen Problem :)
Charles Wu
1
Weiß jemand warum das passiert? Docker neu zu starten scheint hacky, gibt es eine Möglichkeit, dies richtig zu lösen?
Sturm Müller
Das gleiche Update funktionierte im März 2019 für mich. Verwenden von Docker Desktop Version 2.0.0.3 (31259) Kanal: Stable Build: 8858db3 Client: Docker Engine - Community-Version: 18.09.2 API-Version: 1.39 Go-Version: go1.10.8 Git-Commit: 6247962 Erstellt: So 10. Februar 04:12:31 2019 OS / Arch: windows / amd64 Experimentell: false Win 10 Version 10.0.18346.1 (schnelle Version der Vorabversion)
JohnC
hatte das gleiche Problem auf einem Mac und ein Neustart des Dockers hat es ebenfalls behoben ... Jesus, ich hätte Ihre Antwort überprüfen sollen, bevor ich die gesamte Docker-Umgebung lokal neu installiert habe ....: D
cheers
67

Wenn dies einmal passiert, wird Docker neu gestartet. In meinem Fall passierte es jedes Mal, wenn ich meinen Computer neu startete.

Deaktivieren Sie in diesem Fall den Schnellstart , oder Sie starten Docker wahrscheinlich jedes Mal neu, wenn Ihr Computer gestartet wird. Diese Lösung wurde von hier erhalten

chomp
quelle
6
Dies sollte als Antwort akzeptiert werden. Neustart funktioniert, aber wenn Sie es jedes Mal tun müssen, wird es ärgerlich
Vitalii
Ich habe diesen Fehler beim Wechseln der Benutzer unter Windows 10
Vasko
58

Das einfache Neustarten von Docker hat das Problem für mich unter Windows 10 nicht behoben.

In meinem Fall habe ich das Problem mit den folgenden Schritten gelöst:

1) Schließen Sie "Docker Desktop"

2) Führen Sie die folgenden Befehle aus:

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

3) Starten Sie "Docker Desktop" erneut

Hoffe, das wird jemand anderem helfen.

Mohammed Réda OUASSINI
quelle
3
Dies funktioniert bei mir, nachdem ich nur einen Docker-Neustart versucht habe! Vergessen Sie auch nicht, dieses Paar mit Administratorrechten zu führen
Gad Wissberg
Es hat funktioniert, aber ich habe nicht immer Administratorrechte :(
Hassan Tareq
3
Hat für mich funktioniert, den Docker-Dienst neu zu starten, normalerweise war nur ein Docker-Desktop-Neustart ausreichend, aber diesmal nicht ... Docker unter Windows 10 ist wirklich schmerzhaft (Latenzen, Fehler, doc, ...)
FAjir
Das hat funktioniert! Sollte die wirklich akzeptierte Antwort sein. Vielen Dank
Dominik K
Arbeitete für mich, danke!
G.Mast
9

Ich habe auch diesen Fehler erhalten. Wenn Sie wissen möchten, warum der Fehler auftritt, weil Docker bereits einen ähnlichen Container ausführt, um das Problem zu beheben (vermeiden Sie einen Neustart von Docker), müssen Sie:

docker container ls

Du hast etwas Ähnliches wie:

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

Dies ist eine Liste der laufenden Container. Nehmen Sie die CONTAINER-ID (Kopie Ctrl+ C).

Jetzt müssen Sie den Prozess beenden (und ein anderes Image ausführen lassen), um diesen Befehl auszuführen.

docker container stop <CONTAINER_ID>

Und das ist alles! Jetzt können Sie den Container erstellen.

Weitere Informationen finden Sie unter https://docs.docker.com/get-started/part2/.

Andres Rodriguez
quelle
7

Ich bin mir bewusst, dass es bereits viele Antworten gibt, aber keine hat das Problem für mich gelöst.
Stattdessen habe ich diese Fehlermeldung behoben, indem ich Docker auf die Werkseinstellungen zurückgesetzt habe :

Geben Sie hier die Bildbeschreibung ein

jasie
quelle
Hatten Sie vorher einen Fehlerbericht von Docker, weil in meinem Fall so etwas wie ein Fehler mit dem Vorschlag angezeigt wurde, auf die Werkseinstellungen zurückzusetzen.
Theodosios Asvestopoulos
Nein, @TheodosiosAsvestopoulos, ich habe dieses Popup nicht bekommen.
Jason
Seltsamerweise hatte ich heute wieder das gleiche Problem, Docker-Neustart hat nicht geholfen. Ich wollte nicht wieder auf die Werkseinstellungen zurücksetzen, da wir sehr große Bilder abrufen. Deshalb habe ich Docker Desktop einfach beendet und erneut geöffnet und es hat funktioniert (scheint eine andere Aktion zu sein als nur einen Neustart).
Theodosios Asvestopoulos
6

Normalerweise tritt dieser Fehler auf, wenn Sie versuchen, einen Container zu starten, aber die Ports, die der Container benötigt, werden belegt, normalerweise von demselben Docker, wie das Ergebnis eines letzten fehlerhaften Prozesses zum Stoppen.

Für mich ist die Lösung:

  1. Öffnen Sie Windows CMD wie Administrator und geben Sie ein netstat -oan, um den Prozess zu finden (Docker ist der Prozess), der Ihren Port belegt:

In meinem Fall sind meine Docker-Ports 3306 6001 8000 9001.

  1. Jetzt müssen wir diese Ports freigeben, also beenden wir diesen Prozess nach PID (Colum PID), Typ

    TASKKILL /PID 9816 /F
    
  2. Starten Sie Docker neu.

  3. Sei glücklich.

Grüße.

Jhon Didier Sotto
quelle
2

In meinem Fall bestand das Problem darin, dass der Docker-Container (Nginx) 80 Ports verwendet und IIS denselben. Das Einrichten eines anderen Ports in IIS löst das Problem

Артур Камильянов
quelle
1

In den meisten Fällen ist der erste Fall, an den Sie denken sollten, dass ein alter Dienst ausgeführt wird und diesen Port verwendet. In meinem Fall, da ich den Bildnamen ändere, wird bei Verwendung von Docker-Compose zum Stoppen (dann nach oben) der alte Container (Dienst) nicht gestoppt, was dazu führt, dass der neue Container nicht gestartet werden kann.

Phuoc Quach ngoc
quelle
0

Eine etwas späte Antwort, aber ich werde sie hier belassen, sie könnte jemand anderem helfen. Auf einem Mac-Mojave nach vielen Neustarts von Mac und Docker musste ich sudo apachectl stop.

Tarek
quelle
0
  • Der einfachste Weg, dies zu lösen, ist das Neustarten des Dockers. In einigen Fällen funktioniert dies jedoch möglicherweise nicht, obwohl im Port keine Container ausgeführt werden. Sie können die ausgeführten Container mit dem docker psBefehl überprüfen und alle Container anzeigen, die vor der Verwendung des docker ps -aBefehls nicht gelöscht, sondern beendet wurden .

Stellen Sie sich vor, es gibt einen Container mit der Container-ID. 8e35276e845eSie können den Befehl verwenden docker rm 8e35276e845eoder docker rm 8e3den Container beenden. Beachten Sie, dass die ersten drei Zeichenfolgen die ID dieser bestimmten Docker-Container-ID sind. Somit ist gemäß dem obigen Szenario 8e3 die ID von 8e35276e845e .

  • Wenn der Neustart nicht funktioniert, können Sie versuchen, die Ports der Dienste in der Datei docker-compose.yml zu ändern. Entsprechend dem Apache-Port müssen Sie den Port des V-Hosts ändern (falls vorhanden). Dadurch wird Ihr Problem behoben Problem.

Ex:

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

sollte geändert werden in

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

und der bestimmte V-Host muss auch geändert werden,

Bsp. (Gemäß dem obigen Szenario):

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

Dies wird Ihnen helfen, das oben genannte Problem zu lösen.

Hirumina
quelle
0

Für viele Windows-Benutzer da draußen, die das gleiche Problem haben, würde ich empfehlen, den Computer auch neu zu starten, da ein Neustart nur von Docker meistens (zumindest für mich) nicht funktioniert. Daher würde ich vorschlagen, dass Sie die folgenden Schritte ausführen:

  1. Starten Sie Ihren PC neu.
  2. Starten Sie dann Ihre PowerShell als Administrator und führen Sie Folgendes aus:

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

  3. Starten Sie danach Ihren Docker neu.

Nach Abschluss dieser Schritte können Sie problemlos ausgeführt werden. Ich hoffe das hilft.

Donald Shahini
quelle