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

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

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

解決策DOCKER_CERT_PATH以下の@cloverhapが提案したように環境変数を設定する必要がありますが、これには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

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

答え2

私は同じ問題に直面し、Windows 10システムにdockerをインストールするときに次のファイルがあることに気づきました。「Dockerクイックスタートターミナル」インストールされました。これを実行すると、dockerコマンドを実行できるbashシェルが提供されます。これは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/

関連情報