在 Windows/cygwin 环境下运行 Docker

Ale*_*xey 8 cygwin windows docker

我不知道这是否是正确的社会问我的问题,因为我其实是想推出dockercygwin的环境windows。安装 Docker Toolbox 后,我尝试docker version在我的 cygwin shell 中启动并获得:

$ 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.
Run Code Online (Sandbox Code Playgroud)

但是,实际文件 /cygdrive/c/Users/Alexey/.docker/machine/machines/default/ca.pem 在那里,问题似乎出在证书文件路径中的错误斜杠(windows vs 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
Run Code Online (Sandbox Code Playgroud)

更新

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.
Run Code Online (Sandbox Code Playgroud)

@cloverhap在下面提出的解决方案我们需要设置DOCKER_CERT_PATH环境变量,但它应该包含windows路径,而不是cygwin,而且,反斜杠应该被转义,所以解决方案是添加这个:

export DOCKER_CERT_PATH=C:\\Users\\%USERNAME%\\.docker\\machine\\machines\\default
Run Code Online (Sandbox Code Playgroud)

.bash_profile

clo*_*hap 9

在我的 cygwin 环境中,docker cert 路径实际上设置如下,docker 似乎工作正常。

DOCKER_CERT_PATH=C:\Users\user\.docker\machine\machines\default
Run Code Online (Sandbox Code Playgroud)

以下确实给出了错误

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.
Run Code Online (Sandbox Code Playgroud)

因此,尝试将您的 DOCKER_CERT_PATH 更改为常规的 Windows 路径格式。

export DOCKER_CERT_PATH=C:\\Users\\Alexey\\.docker\\machine\\machines\\default
Run Code Online (Sandbox Code Playgroud)

如果结果有任何不同,我的 docker 版本是 1.10.1。