it-swarm.com.de

Docker für Windows wird ausgeführt, Fehler beim Bereitstellen von Ports

Mir ist bekannt, dass es viele Fragen zum Ausführen von Docker unter Windows gibt. Bei dieser Frage wird jedoch der brandneue Docker für Windows unter Windows ausgeführt.
In meinem Fall verwende ich Windows 10 Pro 64-Bit. Laut der Site sollte diese Version unterstützt werden.
Ich habe ein Tutorial verfolgt, das ich hier gefunden habe: https://prakhar.me/docker-curriculum/
Ich habe auch versucht, dem offiziellen Leitfaden zu folgen: https://docs.docker.com/docker-for-windows/

In beiden Lernprogrammen bekomme ich dieselbe Fehlermeldung, wenn Sie versuchen, einen Port mit dem Parameter -P zuzuweisen, oder wenn Sie versuchen, einen Port anzugeben. -p 8080:5000:

In der offiziellen Anleitung laufe ich docker run -d -p 80:80 --name webserver nginx und erhalte: 

C:\Programme\Docker\Docker\Resources\bin\docker.exe: Fehlerhafte Antwort des Daemons: Treiber konnte bei der Programmierung externer Konnektivität auf dem Endpunkt-Webserver keine Verbindung herstellen. 80: tcp: 172.17.0.2: 80: Eingabe-/Ausgabefehler.

Dem inoffiziellen Leitfaden folgend führe ich docker run -p 8888:5000 prakhar1989/catnip aus und erhalte im Grunde die gleiche Fehlermeldung: 

C:\Programme\Docker\Docker\Resources\bin\docker.exe: Fehlerhafte Antwort des Daemons: Treiber konnte keine externe Konnektivität auf dem Endpunkt fokussierter_swartz erstellen (48a0c005779c6e89bf525ead2ecff44a7f092495cd22ef7d19973002963cb232): Fehler beim Starten des benutzerdefinierten Programms. 8888: tcp: 172.17.0.2: 5000: Eingabe-/Ausgabefehler.

Wenn ich nicht versuche, einen Port zuzuweisen, wird der Container ausgeführt, aber ich weiß nicht, wie ich darauf zugreifen kann.

Die Docker-Version, die ich betreibe: 

  • Docker Version 1.12.3, Build 6b644ec` 
  • docker-Compose-Version 1.8.1, Build 004ddae` 
  • docker-machine.exe Version 0.8.2, Build e18a919` 

Jede Hilfe wäre sehr dankbar. Vielen Dank.

27
Søren Ullidtz

Dies wird durch einen Konflikt bei der Portnummerierung verursacht: Github-Problem hier https://github.com/docker/compose/issues/3277

Im Wesentlichen ist der Port belegt! Der Grund für das Zurücksetzen ist, dass andere Zuordnungen gelöscht wurden.

12
Mrk Fldig

Hier ist eine neue Wendung.

Das letzte Windows 10-Update (Herbst Creators Update, 2017) hat eine neue "Funktion". Alle Anwendungen, die beim letzten Herunterfahren ausgeführt wurden, werden automatisch gestartet.

Dadurch wird Docker für Windows in einem fehlerhaften Zustand wiederhergestellt. Das ließ den Anschein erwecken, dass diese Ports von etwas anderem genutzt wurden - es war der Geist ihrer selbst. Dies erklärte, warum diese Ports noch verwendet wurden, obwohl ich meine Container angehalten/gestartet und sogar neu gestartet habe!

In diesem Fall können Sie den Docker-Daemon einfach neu starten.

Um dies nach dem nächsten Herunterfahren zu verhindern, verwenden Sie nicht die Schaltfläche zum Herunterfahren. Geben Sie stattdessen Folgendes ein:

shutdown /s /t 0

Dies umgeht die neue Funktion.

Siehe die Antwort von Jason [MS] in diesem Thread:

https://answers.Microsoft.com/de-de/insider/forum/insider_wintp-insider_perf-insiderplat_pc/programs-autostart-after-boot-in-windows-10-fall/09dd8d3e-7b36-45d1-9181- 6587dd5d53ab

Hier ist ein Workaround für einen Typ (ab Ende dieses Threads - habe es nicht selbst versucht):

http://www.icttoolbox.nl/info/stop-windows-10-creator-fall-reopening-programs-reboot/

46
biscuit314

Ein Neustart des Docker-Daemons behebt dieses Problem vorübergehend, aber um es endgültig loszuwerden, musste ich Schnellstart von Windows 10 deaktivieren, das beschriebene Feature @ biscuit314, durchführen.

Um den Schnellstart von Windows 10 zu deaktivieren, rufen Sie die Systemsteuerung> Energieoptionen auf.> Wählen Sie die Funktion der Ein/Aus-Schaltflächen aus.> Ändern Sie die Einstellungen, die derzeit nicht verfügbar sind

 Disable fast startup

12
Phonolog

1) Stoppen Sie dann alle laufenden Container docker stop $(docker ps -a -q)

2) Stoppen Sie den Docker auf Ihrem Computer und starten Sie ihn erneut.

Führen Sie dann den erforderlichen Befehl aus. Dies löst das Problem.

4
Soumya Boral

Wenn es unter Windows läuft, starten Sie bitte den Docker neu. Dies hat das Problem für mich behoben

4
Anoop George

Verwenden Sie docker stop $ (docker ps -a -q) nur wenn Sie wissen, ob Sie alle Container anhalten möchten oder nicht .... Wenn ja, führen Sie bitte docker rm $ (docker ps -a - q) um Behälter zu entfernen ....

Stoppen Sie dann den Docker-Daemon - systemctl. Stoppen Sie das Docker Starten Sie anschließend den Docker-Daemon - systemctl. Starten Sie das Docker .

Überprüfen Sie auch, ob der Docker-Dämon aktiv ist oder nicht - service Docker-Status

Nachdem Sie alle oben genannten Schritte befolgt haben, sollten Sie in Ordnung sein .....

0
Abhishek Jain

Versuchen Sie, das Docker anzuhalten und im Administratormodus erneut zu starten. Öffnen Sie nach dem Start auch die Power Shell im Administratormodus. Da der Fehler "mkdir" lautet, wird möglicherweise Ihr Problem dadurch gelöst. Ich bin mir nicht sicher, aber es hat für mich funktioniert . Im Fall der Verwendung von -P ist ein Portkonflikt nicht der Grund für den Fehler, sobald -P die Ports zufällig ausgewählt hat. Der Fehler selbst war nicht sehr freundlich zu mir, aber weil ich das mkdir-Wort darauf gesehen habe, stellte ich mir vor, dass es ein Berechtigungsfehler sein könnte. Deshalb habe ich das Docker im Administratormodus neu gestartet und Shell im Administratormodus eingeschaltet.

Ich habe alle Vorschläge zu diesem Thema ausprobiert: Alle Container beenden, Docker Desktop neu starten, "Schnellstart" deaktivieren, Computer neu starten und sicherstellen, dass "Experimentelle Funktionen" deaktiviert sind. Nichts davon hat funktioniert.

Ich habe es schließlich zum Laufen gebracht. Hier sind einige Dinge, die Sie vielleicht ausprobieren möchten (weil ich nicht sicher bin, was sie tatsächlich behoben hat).

  1. Suchen Sie "Docker Desktop" und klicken Sie mit der rechten Maustaste auf "Als Administrator ausführen ...".
  2. Achten Sie auf den Hafen, über den es sich beschwert. Einige Leute sagen, dies könnte Dockers unfreundliche Art sein, zu sagen, dass der Port belegt ist. In meinem Fall war der Port 80. Ich habe die Dienste unter Windows Pro aufgerufen und aus Sicherheitsgründen den "WWW-Publishing-Dienst" deaktiviert.
0
Andrew Kvochick