Docker für Windows funktioniert nicht

70

Ich habe jetzt die Docker Toolbox installiert und erhalte den Fehler für alles:

Get http://127.0.0.1:2375/v1.20/version: dial tcp 127.0.0.1:2375: ConnectExtcp: No connection could be made because the target machine actively refused it..
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?

docker version Ausgabe:

Client:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:49:29 UTC 2015
 OS/Arch:      windows/amd64
Get http://127.0.0.1:2375/v1.20/version: dial tcp 127.0.0.1:2375: ConnectEx tcp: No connection could be made because the target machine actively refused it..
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?

Die VM wird jedoch unter VirtualBox ausgeführt. Ich habe überall gesucht, kann aber keine Lösung finden.

UPDATE1 : Ich verwende Windows 8.1 und habe auch versucht, Kinematic zu starten.

UPDATE2: Als ich Virtualbox Test Build 5.0.3 oder höher ausprobierte, funktionierte alles wie ein Zauber. Sie können hier herunterladen: https://www.virtualbox.org/wiki/Testbuilds

Gowtham Gopalakrishnan
quelle
Ich verwende Windows 10, Virtual Box 5.0.8. Docker Client Version 1.8.3 über Toolbox installiert und erhalten den gleichen Fehler.
Joel Handwell
Ich glaube nicht, dass Windows 10 offiziell noch unterstützt wird.
Gowtham Gopalakrishnan

Antworten:

64

Renn einfach:

"C:\Program Files\Docker Toolbox\docker-machine" ls

Rufen Sie den Computernamen ab und führen Sie Folgendes aus:

"C:\Program Files\Docker Toolbox\docker-machine" env <MACHINE_NAME_HERE> --shell=[cmd|powershell]

und du solltest so etwas bekommen:

"C:\Program Files\Docker Toolbox\docker-machine" env default --shell=cmd
set DOCKER_TLS_VERIFY=1
set DOCKER_HOST=tcp://192.X.X.X:2376
set DOCKER_CERT_PATH=C:\Users\X\.docker\machine\machines\default
set DOCKER_MACHINE_NAME=default
# Run this command to configure your shell:
# copy and paste the above values into your command prompt

Ich erhalte auch einen Fehler open C:\Users\X\.docker\machine\machines\default\server.pem: The system cannot find the file specified. und habe ihn behoben, indem ich meine VirtualBox auf Version 5.0.3 aktualisiert habe (von ihren nächtlichen Builds ).

Lange Version:

Ich habe das gleiche Problem und danach und im Abschnitt "Verwenden von Docker über die Windows-Eingabeaufforderung (cmd.exe)" aus dem Installationshandbuch bin ich in die richtige Richtung gegangen

Grundsätzlich funktioniert Docker so, dass die "Docker" -Befehle an einen Docker-Dienst übergeben werden (der auf Port 2375 ausgeführt wird). Während Sie den Docker vom Windows-Host aus ausführen, wird der Dienst tatsächlich auf dem von Docker erstellten Linux-Host ausgeführt (Sie können ihn durch Öffnen der Virtualbox-Benutzeroberfläche anzeigen).

Der übliche Fluss ist der folgende:

  1. Standardmaschine wird erstellt
  2. Der Starter (kinamatic / "Docker Quickstart Terminal" / cmd) des Computers wartet auf den Start des Computers, erhält seine IP-Adresse und legt in wenigen Umgebungen den IP-Port von Linux als Dienstadresse (anstelle von 127.0.0.1:2375) fest / Powershell-Variablen
  3. Ab diesem Zeitpunkt werden alle docker ...Befehle an den Linux-Host gesendet und alles funktioniert fast wie natives Linux

Das Problem ist, dass es ein Problem mit dem Maschinen-Setup gibt (ich schätze die neue virtuelle Box, aber ich bin mir nicht sicher und habe die Zeit, mich damit zu beschäftigen). Sie können das sehen, indem Sie diels Befehl und feststellen, dass (zumindest in meinem Fall) der Status der Maschine "Zeitüberschreitung" ist und im Gegensatz zu der im Handbuch gezeigten Ausgabe keine URL vorhanden ist.

Dies führt dazu, dass die Umgebungswerte nicht eingestellt werden und die docker ... Befehle fehlschlagen.

Neben der Ausführung des Befehls können Sie auch den Befehl starten Docker Quickstart Terminal , der dasselbe tut, jedoch mit der sh-Shell

In Bezug auf den Zertifikatfehler habe ich versucht, die Zertifikate aus der virtuellen Maschine heraus neu zu generieren.

/usr/local/bin/generate_cert --overwrite --host=default,127.0.0.1,10.0.2.15,192.168.99.100 --ca=/var/lib/boot2docker/tls/ca.pem --ca-key=/var/lib/boot2docker/tls/cakey.pem --cert=/var/lib/boot2docker/tls/server.pem --key=/var/lib/boot2docker/tls/serverkey.pem

Beim Versuch, das Zertifikat auf den Hostcomputer zu kopieren, wurde ein "Protokollfehler" angezeigt, der mich an einen alten Fehler bei freigegebenen Ordnern von virtualbox erinnerte. Daher ist dies möglicherweise kein Problem mit Docker, sondern mit virtualbox. Ich habe auf die neueste nächtliche Version (5.0) aktualisiert .3-102224) hat das Standardbild neu generiert und das scheint es zu lösen. Da Windows 10 weder vom Docker noch von der Virtualbox offiziell unterstützt wird, bin ich mir nicht sicher, ob dies das gleiche ist, bei dem Sie den Zertifikatfehler erhalten. Sie können auf jeden Fall versuchen, die Zertifikate von der virtuellen Maschine zu kopieren (die Sie haben) die Pfade im Codeblock) zu Ihrem lokalen Benutzerverzeichnis (es ist / c / Users / X / in der virtuellen Maschine zugeordnet)

SimSimY
quelle
2
Es meldet mir den Fehler : open C:\Users\<my_username>\.docker\machine\machines\default\ca.pem: The system cannot find the file specified.. Und als ich ins Verzeichnis kam, gibt es dort keine Zertifikate.
Gowtham Gopalakrishnan
Scheint ein Fehler oder so etwas zu sein: https://github.com/docker/machine/issues/742
Gowtham Gopalakrishnan
2
Update: Ich habe auch versucht, die Zertifikate mit dem Befehl neu zu generieren, docker-machine regenerate-certs defaultaber es bleibt für immer hängen .
Gowtham Gopalakrishnan
Übrigens, ich hatte das gleiche Problem und am Ende wurde das Upgrade auf virutal box 5.0.3 (nigthly build) durchgeführt
SimSimY
1
Hallo, danke für diese Details, wenn hier noch mehr helfen kann, finden "C:\Program Files\Docker Toolbox\docker-machine" ls Sie hier eine Zusammenfassung meiner Arbeit : 1) 2) Installieren Sie einen nahezu virtuellen Build von Virtual Box 3) docker-machine regenerate-certs default(vor der Installation eines virtuellen Builds für nahezu diesen Build endeten diese Befehle nie) 4) "C:\Program Files\Docker Toolbox\docker-machine" env default --shell=cmd 5 ) Öffnen Sie Docker Terminal und setzen Sie die Variablen 6) Schließen Sie Docker Terminanl und öffnen Sie es erneut, jetzt funktioniert es ;-)
Baptiste Gaillard
8

Folgendes hat bei mir funktioniert (Docker Toolbox 1.8.1b und Windows 7). Es ist eine vereinfachte Version dessen, was @ baptiste-gaillard in den obigen Kommentaren beschrieben hat. Kurze Antwort: Verwenden Sie VirtualBox 5.03 oder höher von Anfang an.

  1. Laden Sie VirtualBox 5.03 (zum Zeitpunkt dieses Beitrags jede Nacht erstellt) und das Erweiterungspaket herunter.
  2. Laptop neu starten. (Löscht das Ausführen von VirtualBox-Inhalten.)
  3. Installieren Sie VirtualBox 5.03 und das Erweiterungspaket 5.03.
  4. Löschen Sie die Standard-VM vollständig (entfernen Sie Dateien).
  5. Führen Sie die Docker Quickstart Terminal-Verknüpfung erneut aus, um die Standard-VM zu generieren.

Das Schnellstart-Skript scheint mit VirtualBox 5.03 hinsichtlich der Erstellung der erforderlichen TLS-Schlüssel besser zurechtzukommen.

James C.
quelle
Ich kann Version 5.03 nicht finden. Die neueste Version ist 5.0.2. Können Sie einen Link verweisen?
Gowtham Gopalakrishnan
1
Wenn Sie Ihren Computer nicht neu starten möchten: Schritt 2 kann übersprungen / ersetzt werden . Die Installation blockiert und teilt Ihnen mit, dass ein Prozess abgebrochen werden muss, um die Installation von VirtualBox fortzusetzen. Die PID wird sogar in der Benutzeroberfläche des Assistenten gedruckt. Führen Sie taskkill -f -pid [PID_LISTED]alle PIDs aus, und die Installation sollte ordnungsgemäß fortgesetzt werden.
Plog17
8

Hatte das gleiche Problem wie Sie gezeigt und habe es vor ein paar Stunden behoben.

Sie müssen lediglich Hyper-V deaktivieren. Führen Sie eine Eingabeaufforderung mit Administratorrechten aus und führen Sie den folgenden Befehl aus:

bcdedit /set hypervisorlaunchtype off

Starten Sie Ihren PC neu, öffnen Sie die Virtualbox und löschen Sie die Standard-VM nach dem Neustart. Kehren Sie zum Docker-Schnellstart-Terminal zurück und geben Sie den folgenden Befehl ein:

docker run hello-world

und du bist fertig! Hoffe, es löst Ihr Problem

Bla bla
quelle
2
Dies löste mein Problem unter Windows 10, nachdem ein Windows-Update den Hypervisor eingeschaltet hatte
Roman Dvoskin
Aktivieren / Deaktivieren von Hyper-V unter Windows: Eightforums.com/tutorials/…
G. Ghez
5

das funktioniert bei mir

1) Starten Sie zuerst das Befehlszeilentool und rufen Sie die IP-Adresse des Computers durch Ausführen ab

Docker-Maschine ls Befehl

2) Generieren Sie Zertifikate neu Docker-Maschine Regenerieren-Zertifikate

3) Stellen Sie die evn-Variablen manuell ein, in meinem Fall war die Position der Zertifikate unterschiedlich

setze DOCKER_TLS_VERIFY = 1

setze DOCKER_HOST = tcp: // machine_IP: 2376

Setzen Sie DOCKER_CERT_PATH = C: \ Users \ X.docker \ machine \ certs

setze DOCKER_MACHINE_NAME = default

Führen Sie nun die Docker-Version aus

Hier ist die Ausgabe in meinem Fall

Client: Version: 1.8.1 API-Version: 1.20 Go-Version: go1.4.2 Git-Commit: d12ea79 Erstellt: Do 13. August 02:49:29 UTC 2015 OS / Arch: windows / amd64

Server: Version: 1.8.1 API-Version: 1.20 Go-Version: go1.4.2 Git-Commit: d12ea79 Erstellt: Do 13. August 02:49:29 UTC 2015 OS / Arch: linux / amd64

Sandiindia
quelle
3

Bei der Installation der Docker Toolbox (in 1.8.x) wird Ihr Docker-Daemon standardmäßig so konfiguriert, dass eine sichere Verbindung über das TLS-Protokoll (Version 1.8) verwendet wird.

Wenn Sie eine ältere Version des Daemons verwendet haben, die nicht gesichert war, bedeutet dies mindestens zwei Dinge: - Die Portnummer wurde von 2375 auf 2376 geändert. - Ihr Daemon-Client muss ein Zertifikat vorlegen, um mit Ihrer Docker-Engine / Ihrem Docker-Server zu kommunizieren.

Die Antwort von sandiindia zeigt also die Umgebungsvariablen an, die dem Docker-Client genau die gute Konfiguration für die Verbindung zum Docker-Server / der Docker-Engine geben:

#You're using a TLS secured daemon : 
set DOCKER_TLS_VERIFY=1

# Precise the Docker Host IP and port, the TLS default is 2376
set DOCKER_HOST=tcp://*<docker_host_IP>*:2376

# The paths to the certificate and client key needed to authenticate to the daemon
# You should have 3 files in this directory : ca.pem, cert.pem and key.pem 
# In my case the default path looks like : 
set DOCKER_CERT_PATH=C:\Users\*<username>*\.docker\machine\machines\default

#the name of your Docker Host VM : 
set DOCKER_MACHINE_NAME=default

Die Docker-Dokumentation zur TLS-Konfiguration: https://docs.docker.com/articles/https/

Ich hoffe, es hilft ;)

vbe
quelle
3
Close the virtual machine from Virtual Box (you don't have to delete it)
Close Kitematic
Close Docker Quickstart Terminal

Tun Sie dies nun in der richtigen Reihenfolge:

Open Kitematic
Open Docker Quickstart Terminal

Es ist wichtig, das nicht zu tun das Docker Quickstart Terminal nicht vor Kitematic öffnen, da Kitematic die Dinge für das Docker Quickstart Terminal initialisiert

Ich musste keine Befehlszeile ausführen.

Ich hoffe das wird einem Körper helfen ..

simo
quelle
2

Auch ich hatte das gleiche Problem, aber ich konnte es lösen, ohne etwas in die Befehlszeile eingeben zu müssen. Es funktionierte sofort.

Es stellte sich heraus, dass einige Initialisierungsschritte fehlten, wie in der akzeptierten Antwort oben ausgeführt. Warum hat die Standard-Docker-Installation dies nicht bereits getan? Ich hatte auch fehlende Zertifikate. Also habe ich alles deinstalliert und von Grund auf neu gestartet. Öffnen Sie nach Abschluss der Installation dieses Mal jedoch nicht zuerst das Docker-Schnellstart-Terminal, sondern Kitematic, um die erste Initialisierung für Sie durchzuführen .

Kitematic hat die Zertifikate für mich erstellt, die fehlenden env-Variablen festgelegt und dann das Docker-Schnellstart-Terminal geöffnet. Ich tippte docker run hello-worlddann docker versionund diesmal funktionierte es wie erwartet, keine Fehlermeldungen.

Beachten Sie, dass dies nicht funktioniert hat, als ich das Schnellstart-Terminal zuerst geöffnet habe .

Ich teste Docker in VMWare 10-Instanzen und konnte dieses Problem und seine Lösung (Problemumgehung) in jedem Fall duplizieren.

Ich hoffe das hilft.

Arnold
quelle
2

Ich habe mein Problem behoben, indem ich einfach die Standard-VM im VirtualBox-Manager entfernt, den PC neu gestartet (nur für den Fall) und dann Docker Quickstart Terminal erneut ausgeführt habe. Das ist es.

Docker 1.8.2 und Virtual Box 5.0.4

Garrick
quelle
1
  1. Aktualisieren Sie auf die neueste virtuelle Box über 5.0.3
  2. Starten Sie das System neu
  3. Öffnen Sie die virtuelle Box und entfernen Sie die virtuelle Standardmaschine
  4. Öffnen Sie das Docker-Schnellstartterminal
  5. Lauf docker run hello-world

Und du bist fertig.

Abhishek Shringi
quelle
Ich wache heute Morgen auf, um den gleichen Fehler wieder zu sehen, obwohl er vor drei Tagen einfach perfekt war. Ich habe nichts getan. Das ist seltsam
simo
1

Löschen und entfernen Sie alle alten v.machines auf Ihrem Laptop: 1. Öffnen Sie VirtualBox, klicken Sie mit der rechten Maustaste auf "Standard", Entfernen, "Alle Dateien löschen". 2. Eingabeaufforderung (Als Administrator ausführen)> Docker-Maschine rm default

Deinstallieren Sie Virtualbox, Docker Toolbox und Git. Navigieren Sie zu c: \ Users \ Vinita und löschen Sie die Verzeichnisse. .docker und .Virtualbox CClean Dateien und Registrierung. Starten Sie neu.

Die Reinigung ist abgeschlossen.

I. Laden Sie die neueste Version der Docker-Tools für Windows (1.10.2) von der Docker Toolbox herunter. Klicken Sie mit der rechten Maustaste auf die heruntergeladene Datei und klicken Sie auf "Als Administrator ausführen". Dies wird installiert - Docker Quickstart, Kitematic und Virtualbox.

II. Laden Sie die neueste Testversion von VirtualBox (5.01.15-105696-win.exe) von Testbuilds - Oracle VM VirtualBox herunter. Führen Sie erneut als Administrator aus.

(Sie können alle Warnungen ignorieren und auf der bereits von Docker installierten VirtualBox überschreiben.)

Bisher nichts Außergewöhnliches. Wir haben die Software gerade mit Administratorrechten installiert. Jetzt Systemsteuerung> Netzwerk- und Freigabecenter> Adaptereinstellungen ändern: Klicken Sie mit der rechten Maustaste auf VirtualBox Host-Only Network # 2 für Eigenschaften. Aktivieren Sie> VirtualBox NDIS6 Bridged Networking-Treiber. (Wenn es bereits aktiviert ist, deaktivieren Sie es und überprüfen Sie es erneut.)

Du bist fertig. Dies ist das einzige Update, das wir eingesetzt haben!

Sowohl Kitematic als auch Docker Quickstart sollten jetzt funktionieren.

Klicken Sie mit der rechten Maustaste auf Kitematic und führen Sie das erste Mal als Administrator aus. Getestet unter Windows 10.

KRK
quelle
1

Mit Docker 1.8.1d hatte das gleiche Problem, nachdem 1.8.1c deinstalliert wurde. Eventuell behobenes Problem durch Installation der neuesten Virtual Box (5.0.18), Neustart nach Aufforderung und Starten von Kitematic. Kitematic schlägt zunächst fehl und bietet die Möglichkeit, die von mir durchgeführte VM zu entfernen und erneut zu installieren. Danach war mein QuickStart-Terminal in Ordnung.

Stefan Sieradzki
quelle
1

Es klingt wie das Problem mit der virtuellen Box. In meinem Fall habe ich die folgenden Schritte ausgeführt, um das Problem zu beheben

  • Stoppen Sie die Docker-Maschine durch 'Docker-Maschine-Stopp'
  • Öffnen Sie das Netzwerk- und Freigabecenter unter Windows
  • Klicken Sie auf Adaptereinstellungen ändern
  • Deaktivieren Sie das Netzwerk "Nur VirtualBox-Host"
  • Starten Sie die Docker-Maschine mit 'Docker-Maschine-Start'
NIrav Modi
quelle
0

Dies ist mir unter Windows 10 mit VirtualBox 5.0.14 einige Male passiert.

Es scheint damit zu tun zu haben, dass VirtualBox nicht richtig heruntergefahren wurde (glaube ich) - zum Beispiel ein Stromausfall!

  1. Fahren Sie die Docker-VM herunter

  2. Kitematic schließen

  3. Starten Sie das Docker-Schnellstartterminal

  4. Geben Sie das Terminal ein:

docker-machine.exe -D ls

  1. Starten Sie Kitematic. VMs werden jetzt angezeigt.

Wenn dies nicht funktioniert, versuchen Sie es erneut mit 1-3 und versuchen Sie diesmal, Zertifikate neu zu generieren. Führen Sie dann Schritt 4 aus.

Eine seltsame Sache ist, dass das Terminal docker imagessie nicht auflistet, sondern angibt, dass keine Verbindung zu 127.0.0.1:2375 hergestellt werden kann ( docker-machine lszeigt jedoch den Standardcomputer an, der unter 192.168.99.100:2376 ausgeführt wird).

rmcsharry
quelle
0

Ich habe genau den gleichen Fehler festgestellt, als ich Docker-Images nach einem Systemneustart ausführte. Ich habe Docker Version 1.10 unter Windows 7 64-Bit mit Virtualbox 5.0.10 und Mintty verwendet (das Terminal wird mit Git für Windows geliefert).

Das Ausführen der Docker-Maschine hat mir gezeigt, dass sich die virtuelle Maschine im Timeout-Status befindet. $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default virtualbox Timeout Also habe ich die virtuelle Maschine neu gestartet. $ docker-machine restart default Dann habe ich den Status erneut $ docker-machine ls Unable to query docker version: Get https://192.168.56.101:2376/v1.15/version: x509: certificate is valid for 192.168.99.101, not 192.168.56.101 aufgelistet $ docker-machine regenerate-certs default und mir mitgeteilt, dass das Zertifikat an eine falsche Adresse gebunden ist: Dann habe ich das Zertifikat neu generiert und schließlich $ eval $(docker-machine env default --shell=bash) funktioniert Docker wieder!

Leon
quelle
0

Erstellen Sie einfach den Standardcomputer neu und führen Sie ihn aus

docker-machine env default

Für mich geht das.

Nam Nguyen
quelle
0

Wenn Sie Docker für Windows (Beta) verwenden, gehen Sie folgendermaßen vor:

  • Deaktivieren Sie den Netzwerkadapter "DockerNAT"
  • Führen Sie "Zurücksetzen auf Werkseinstellungen" über die Taskleiste / Docker / Einstellungen / Auf Werkseinstellungen zurücksetzen "aus.
Gomes
quelle
0

Auf meiner nicht virtuellen Maschine wurde der gleiche Fehler angezeigt. Die folgenden Schritte haben bei mir funktioniert

Klicken Sie mit der rechten Maustaste auf Docker-> Unter Einstellungen-> Allgemein. Haben Sie Expose-Daemon auf tcp: // localhost: 2375 ohne TLS aktiviert? Sie müssen, wenn Sie wie beschrieben auf den Dämon zugreifen möchten. Beachten Sie jedoch, dass diese Einstellung unsicher ist, wie in der Warnung erläutert.

Harshal Bhavsar
quelle
0

Ich hatte das gleiche Problem mit Docker Toolbox unter Windows 10 Home. Die Schritte zur Behebung des Problems von hier aus :

  1. führen docker-machine lseine Liste zu bekommen, sollten Sie wahrscheinlich sehen:
NAME      ACTIVE   DRIVER       STATE     URL   SWARM   DOCKER    ERRORS
default   -        virtualbox   Stopped                 Unknown
  1. Optionale Schrittaktualisierung (geduldig sein):
docker-machine upgrade
  1. Starten Sie die default:
docker-machine start default

Mach dir keine Sorgen, wenn sagt:

Maschine "Standard" läuft bereits.

  1. Jetzt sollten Sie in der Lage sein, zu rennen docker versionund etwas zu sehen wie:
Client:
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.7
 Git commit:        74b1e89e8a
 Built:             Wed Jul 31 15:18:18 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.12
  Git commit:       633a0ea838
  Built:            Wed Nov 13 07:28:45 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
Foad
quelle
-2

Mein Problem war "... Fehler beim Abrufen der IP-Adresse". Vielen Dank an alle Personen hier, die ihre Lösungen beigesteuert haben, die ich gelesen und die folgenden Schritte ausgeführt habe:

  1. Schließen Sie Docker

  2. Öffnen Sie den VirtualBox Manager

  3. Standard-VM löschen

  4. Starten Sie zuerst Kitematic (ich denke, das ist wichtig)

  5. Starten Sie Docker

Isriyanti Akira
quelle