Ich bin nicht sicher, ob dies die richtige Community ist, um nach meinem Problem zu fragen, da ich eigentlich versuche, docker
in cygwin
der Umgebung auf zu starten windows
. Nach der Installation von Docker Toolbox versuche ich, docker version
in 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_PATH
eine 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?
Damit wird dies gestartet …
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:
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/