在Cygwin中Docker命令失败 - Docker服务已启动

时间:2017-03-02 16:10:05

标签: docker cygwin

我尝试使用docker login中的aws ecr get-login --region eu-west-1字符串登录我的AWS账户 - 但是,当我这样做时,我明白了:

  

警告:无法从守护程序获取默认注册表端点(连接期间出错:Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.26/info:open //./pipe/docker_engine:系统找不到指定的文件。在Windows上的默认守护程序配置中,必须提升docker客户端才能连接。此错误也可能表示docker守护程序未运行。)。使用系统默认值:https://index.docker.io/v1/   连接期间出错:发布http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.26/auth:打开//./pipe/docker_engine:系统找不到指定的文件。在Windows上的默认守护程序配置中,必须提升docker客户端以进行连接。此错误还可能表示docker守护程序未运行

奇怪的是,这只是上周的工作。我在Windows 10上使用Cygwin。我已经验证了Docker在services.msc中运行 - 我现在还不完全确定要检查的内容。

2 个答案:

答案 0 :(得分:3)

如果要在Windows 10上的cygwin中运行docker命令,请从cygwin中调用以下命令:

bool_cols = [col for col in df if 
               df[col].dropna().value_counts().index.isin([0,1]).all()]

它将显示docker所需的环境变量:

docker-machine env --shell=bash

运行以下命令设置环境变量:

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.xx.xx:2376"
export DOCKER_CERT_PATH="C:\Users\...\machines\default"
export DOCKER_MACHINE_NAME="default"
export COMPOSE_CONVERT_WINDOWS_PATHS="true"
# Run this command to configure your shell:
# eval $(docker-machine env --shell=bash)

答案 1 :(得分:2)

看起来您正试图通过将窗口管道路径传递给cygwin来打开管道。它被cygwin解释为http路径。

这可能是因为docker命令在找到windows python之前找到了cygwin python。有几种解决方案。最简单的是切换回Windows上下文以执行docker命令。如果docker实际上是docker.bat,则以cmd.exe /c docker.bat开始,否则cmd.exe /c docker.exe。您也可以尝试cmd.exe /c start /w /i docker.bat。或者一些变化。

您不希望直接在cygwin中执行任何docker命令,因为它可能不知道如何在Windows路径和它期望的Linux路径之间进行转换。