31

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

在此处输入图像描述

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

我怎样才能解决这个问题?

4

6 回答 6

40
docker-machine upgrade <your-machine>

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

如果 docker 客户端是 1.9.x 并且服务器正在运行 docker 1.8.x,则会观察到错误消息。

于 2015-12-01T07:55:01.363 回答
34

如果有人碰巧遇到此错误,但没有使用docker-machine,则可以通过在客户端的环境变量中指定较旧的 API 版本来解决此问题:

export DOCKER_API_VERSION=<version>

例如:

export DOCKER_API_VERSION=1.19

并重试该docker命令。

参考

于 2016-07-13T22:17:42.393 回答
13

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

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

sudo service docker restart
于 2016-08-19T07:53:09.847 回答
3

如果您升级 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更改您的客户端版本。

非常简单和强大。=)

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

希望能帮助到你

于 2015-12-10T16:16:28.040 回答
1

显然这个错误是由于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)

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

于 2016-02-03T13:32:40.670 回答
-1

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

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

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

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

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

在此处查看适用于 OS X 的 GitHub 上的官方卸载脚本。

于 2016-02-04T21:25:08.200 回答