【问题标题】:Docker commands fail in Cygwin -- Docker service is upDocker 命令在 Cygwin 中失败 - Docker 服务已启动
【发布时间】:2017-07-22 11:19:01
【问题描述】:

我正在尝试使用来自 aws ecr get-login --region eu-west-1 的 docker loginstring 登录到我的 AWS 账户——但是,当我这样做时,我得到了这个:

警告:无法从守护进程获取默认注册表端点(连接期间出错:获取http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.26/info:打开 //./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 daemon 没有运行

奇怪的是,这只是上周才起作用。我在 Windows 10 上使用 Cygwin。我已验证 Docker 正在 services.msc 中运行——我不完全确定现在要检查什么。

【问题讨论】:

    标签: docker cygwin


    【解决方案1】:

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

    docker-machine env --shell=bash
    

    会显示docker需要的环境变量:

    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)
    

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

    eval $(docker-machine env --shell=bash)
    

    【讨论】:

      【解决方案2】:

      您似乎正试图通过将 Windows 管道路径传递给 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 路径之间进行转换。

      【讨论】:

        猜你喜欢
        • 2016-12-30
        • 1970-01-01
        • 2020-05-03
        • 2021-06-18
        • 2020-11-02
        • 1970-01-01
        • 2021-06-15
        • 1970-01-01
        相关资源
        最近更新 更多