Windows/cygwin 環境で Docker を実行する

Windows/cygwin 環境で Docker を実行する

実際にの環境docker内で起動しようとしているため、これが私の問題について質問する適切なコミュニティかどうかわかりません。Docker Toolbox をインストールした後、cygwin シェルで起動しようとすると、次のメッセージが表示されます。cygwinwindowsdocker version

$ 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.

ただし、実際のファイル /cygdrive/c/Users/Alexey/.docker/machine/machines/default/ca.pem はそこにあります。問題は、証明書ファイルへのパス内のスラッシュが間違っていること (Windows と UNIX) にあるようです。しかし、どこを修正すればよいのかわかりません。

~/.bash_profile に設定されている環境変数は次のとおりです。

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

アップデート

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.

解決@cloverhap が下記で提案しているように、DOCKER_CERT_PATH環境変数を設定する必要がありますが、それには cygwin ではなく Windows パスを含める必要があり、さらに、バックスラッシュはエスケープする必要があります。そのため、解決策としては以下を追加します。

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

.bash_profile

答え1

私の cygwin 環境では、docker 証明書パスは実際には以下のように設定されており、docker は正常に動作しているようです。

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

次は確かにエラーになります

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.

したがって、DOCKER_CERT_PATH を通常の Windows パス形式に変更してみてください。

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

結果が異なる場合、私の Docker バージョンは 1.10.1 です。

答え2

私も同じ問題を抱えていましたが、Windows 10システムにdockerをインストールしたときに、「Docker クイックスタート ターミナル」がインストールされました。これを実行すると、bash シェルが提供され、そのターミナルで docker コマンドを実行できます。Cygwin の bash ではないかもしれませんが、それで何になるのでしょうか?

ここに画像の説明を入力してください

これにより、これが起動します...

ここに画像の説明を入力してください

答え3

ここで示した解決策はどれも私にはうまくいきませんでした。Cywin を使用しても、Docker Desktop の GUI にプロキシを設定する必要があることがわかりました。 ここに画像の説明を入力してください

その後、私は実行できるようになりました:

$ 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/

関連情報