【问题标题】:Docker - Error response from daemon: client is newer than serverDocker - 来自守护程序的错误响应:客户端比服务器新
【发布时间】:2015-12-01 07:55:01
【问题描述】:

使用 Docker Machine 创建新机器后,出现以下错误:

$ docker ps
Error response from daemon: client is newer than server(client API version 1.21, server API version: 1.19)

我该如何解决这个问题?

【问题讨论】:

    标签: docker docker-compose docker-machine docker-api


    【解决方案1】:
    docker-machine upgrade <your-machine>
    

    会成功的。即使您没有使用 RC 并且您的机器是新创建的,这也可能发生 - 就像对我一样。这将是由于 ISO 缓存问题。错误在this thread 中注释。

    如果docker客户端是1.9.x,服务端运行的是docker 1.8.x, 观察到错误消息。

    【讨论】:

    • 谢谢!!似乎解决了我的问题, 是什么?
    • 你的 docker-machine 的名字,通常是 default 或 dev
    【解决方案2】:

    如果有人碰巧收到此错误,但没有使用docker-machine,还有另一种方法可以解决问题,方法是在客户端的环境变量中指定较旧的 API 版本:

    export DOCKER_API_VERSION=<version>
    

    例如:

    export DOCKER_API_VERSION=1.19
    

    然后重试docker 命令。

    Reference.

    【讨论】:

    • 确认这也适用于“Ubuntu 16.04.1 LTS”
    • 哇,当我不认为我会对 docker, inc 更不感兴趣的时候......为什么它不默认自己做呢?
    【解决方案3】:

    在 ubuntu 发行版上,如果 docker 作为服务运行,它会在 apt 更新之后发生。 客户端已更新,但旧版本的服务器仍在运行。

    在这种情况下,只需执行以下操作:

    sudo service docker restart
    

    【讨论】:

    • 就这么简单!
    • 如有疑问,请重新启动/启动!
    【解决方案4】:

    如果您升级 docker 客户端,您将无法使用旧的 docker-machine 虚拟机。实际上,您可以使用docker-machine upgrade vm-name 强制升级,但如果您使用其他发行版(boot2docker 除外)作为 docker 主机,如 coreos、atomic、rancheros,它可能会失败。

    我正在使用 Carina 管理多个 docker 客户端版本。

    只需使用$ curl -sL https://download.getcarina.com/dvm/latest/install.sh | sh 安装(Linux 和 mac 安装)并运行 dvm ls 以列出已安装的版本,dvm install 1.9.0 以安装版本,dvm use 1.8.1 以更改您的客户端版本。

    非常简单和强大。 =)

    注意,为了您的安全,请务必在运行之前查看从互联网下载的脚本。

    希望对你有帮助

    【讨论】:

      【解决方案5】:

      显然这个错误是由于docker-machine“睡着了”。这是为我解决它的魔术命令:

      $ docker-machine restart default
      

      或将default 替换为您的机器名称。 结果是:

      $ docker-machine restart default
      Restarting "default"...
      Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
      

      按照建议,您可能需要:

      $ docker-machine env default
      export DOCKER_TLS_VERIFY="1"
      export DOCKER_HOST="tcp://....."
      export DOCKER_CERT_PATH=".../.docker/machine/machines/default"
      export DOCKER_MACHINE_NAME="default"
      # Run this command to configure your shell:
      # eval $(docker-machine env default)
      

      所以你最终运行了那个命令:

      $ eval $(docker-machine env default)
      

      从现在开始它应该可以工作了。

      【讨论】:

        【解决方案6】:

        我在 1.10.0-rc4 中遇到了同样的问题,结果发现在安装更新的 Docker 工具箱时 boot2docker 没有正确更新。我不得不手动删除 boot2docker:

        sudo rm -rf /usr/local/share/boot2docker
        

        您也可以删除工具箱的其余部分:

        sudo rm -rf /usr/local/bin/docker*
        sudo rm -rf /Applications/Docker
        

        最后安装所需版本的 Docker Toolbox。

        请查看on GitHub for OS X here.的官方卸载脚本

        【讨论】:

          猜你喜欢
          • 2015-12-04
          • 2021-11-06
          • 1970-01-01
          • 1970-01-01
          • 2022-07-19
          • 1970-01-01
          • 1970-01-01
          • 2017-05-16
          • 2012-05-26
          相关资源
          最近更新 更多