Ausführen von Docker unter einer Windows-/Cygwin-Umgebung

Ausführen von Docker unter einer Windows-/Cygwin-Umgebung

Ich bin nicht sicher, ob dies die richtige Community ist, um nach meinem Problem zu fragen, da ich eigentlich versuche, dockerin cygwinder Umgebung auf zu starten windows. Nach der Installation von Docker Toolbox versuche ich, docker versionin meiner Cygwin-Shell zu starten und erhalte:

$ docker version
Could not read CA certificate "\\cygdrive\\c\\Users\\Alexey\\.docker\\machine\\machines\\default\\ca.pem": open \cygdrive\c\Users\Alexey\.docker\machine\machines\default\ca.pem: The system cannot find the path specified.

Die eigentliche Datei /cygdrive/c/Users/Alexey/.docker/machine/machines/default/ca.pem ist jedoch vorhanden. Das Problem scheint in falschen Schrägstrichen (Windows vs. UNIX) im Pfad zur Zertifikatsdatei zu liegen. Aber ich kann nicht herausfinden, wie ich das beheben kann.

Hier sind die in ~/.bash_profile festgelegten Umgebungsvariablen:

export DOCKER_HOST=tcp://192.168.99.100:2376
export DOCKER_MACHINE_NAME=default
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=/cygdrive/c/Users/Alexey/.docker/machine/machines/default
export TERM=cygwin

AKTUALISIEREN

Alexey@Alexey-PC ~
$ echo $DOCKER_CERT_PATH
/cygdrive/c/Users/Alexey/.docker/machine/machines/default/

Alexey@Alexey-PC ~
$ docker version
Could not read CA certificate "\\cygdrive\\c\\Users\\Alexey\\.docker\\machine\\machines\\default\\ca.pem": open \cygdrive\c\Users\Alexey\.docker\machine\machines\default\ca.pem: The system cannot find the path specified.

LÖSUNGwie unten von @cloverhap vorgeschlagen, müssen wir DOCKER_CERT_PATHeine Umgebungsvariable festlegen, diese sollte jedoch den Windows-Pfad enthalten, nicht Cygwin, und außerdem sollten die Backslashes maskiert werden. Die Lösung besteht also darin, Folgendes hinzuzufügen:

export DOCKER_CERT_PATH=C:\\Users\\%USERNAME%\\.docker\\machine\\machines\\default

Zu.bash_profile

Antwort1

In meiner Cygwin-Umgebung ist der Docker-Zertifikatspfad tatsächlich wie unten angegeben festgelegt und Docker scheint einwandfrei zu funktionieren.

DOCKER_CERT_PATH=C:\Users\user\.docker\machine\machines\default

Folgendes führt tatsächlich zu einem Fehler

DOCKER_CERT_PATH=/cygdrive/c/Users/user/.docker/machine/machines/default
$ docker version
Could not read CA certificate "\\cygdrive\\c\\Users\\user\\.docker\\machine\\machines\\default\\ca.pem": open \cygdrive\c\Users\user\.docker\machine\machines\default\ca.pem: The system cannot find the path specified.

Versuchen Sie daher, Ihren DOCKER_CERT_PATH in das normale Windows-Pfadformat zu ändern.

export DOCKER_CERT_PATH=C:\\Users\\Alexey\\.docker\\machine\\machines\\default

Meine Docker-Version ist 1.10.1, falls die Ergebnisse anders sind.

Antwort2

Ich hatte das gleiche Problem, dann wurde mir klar, dass bei der Installation von Docker auf meinem Windows 10-System ein Programm namens„Docker-Schnellstart-Terminal“wurde installiert. Wenn Sie das ausführen, wird eine Bash-Shell angezeigt und Sie können Ihren Docker-Befehl in diesem Terminal ausführen. Es ist vielleicht nicht Cygwins Bash, aber was soll's?

Bildbeschreibung hier eingeben

Damit wird dies gestartet …

Bildbeschreibung hier eingeben

Antwort3

Keine der hier angegebenen Lösungen hat bei mir funktioniert. Ich habe festgestellt, dass man sogar bei Verwendung von Cywin den Proxy in der GUI von Docker Desktop konfigurieren muss: Bildbeschreibung hier eingeben

Danach konnte ich ausführen:

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pulling fs layer
1b930d010525: Verifying Checksum
1b930d010525: Download complete
1b930d010525: Pull complete
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

verwandte Informationen