Docker - 来自守护进程的错误响应:客户端比服务器更新
Docker - Error response from daemon: client is newer than server
使用 Docker 机器创建新机器后,出现以下错误:
$ docker ps
Error response from daemon: client is newer than server(client API version 1.21, server API version: 1.19)
我该如何解决这个问题?
docker-machine upgrade <your-machine>
会成功的。这可能会发生 - 正如它对我所做的那样 - 即使你没有使用 RC 并且你的机器是新创建的。这将是由于 ISO 缓存问题。错误在 this thread.
中注释
If the docker client is 1.9.x and the server is running docker 1.8.x,
the error message is observed.
如果升级 docker 客户端,您将无法使用旧的 docker-machine VM。实际上,您可以使用 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
安装versions 和 dvm use 1.8.1
更改您的客户端版本。
非常简单和强大。 =)
注意,为了您的安全,请务必在 运行 加载从 Internet 下载的脚本之前查看它们。
希望对您有所帮助
显然这个错误是由于 docker-machine
"falling asleep"。这是为我解决它的神奇命令:
$ 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)
从现在开始它应该可以工作了。
我在 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 所需版本的工具箱。
的官方卸载脚本
如果有人碰巧收到此错误,但没有使用 docker-machine
,还有另一种方法可以通过在客户端的环境变量中指定较旧的 API 版本来解决此问题:
export DOCKER_API_VERSION=<version>
例如:
export DOCKER_API_VERSION=1.19
并重试 docker
命令。
在 ubuntu distrib 上它发生在 apt 更新之后,如果 docker 运行 作为服务。
客户端已更新,但服务器的旧版本仍然是运行ning.
在这种情况下只需执行以下操作:
sudo service docker restart
使用 Docker 机器创建新机器后,出现以下错误:
$ docker ps
Error response from daemon: client is newer than server(client API version 1.21, server API version: 1.19)
我该如何解决这个问题?
docker-machine upgrade <your-machine>
会成功的。这可能会发生 - 正如它对我所做的那样 - 即使你没有使用 RC 并且你的机器是新创建的。这将是由于 ISO 缓存问题。错误在 this thread.
中注释If the docker client is 1.9.x and the server is running docker 1.8.x, the error message is observed.
如果升级 docker 客户端,您将无法使用旧的 docker-machine VM。实际上,您可以使用 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
安装versions 和 dvm use 1.8.1
更改您的客户端版本。
非常简单和强大。 =)
注意,为了您的安全,请务必在 运行 加载从 Internet 下载的脚本之前查看它们。
希望对您有所帮助
显然这个错误是由于 docker-machine
"falling asleep"。这是为我解决它的神奇命令:
$ 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)
从现在开始它应该可以工作了。
我在 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 所需版本的工具箱。
的官方卸载脚本如果有人碰巧收到此错误,但没有使用 docker-machine
,还有另一种方法可以通过在客户端的环境变量中指定较旧的 API 版本来解决此问题:
export DOCKER_API_VERSION=<version>
例如:
export DOCKER_API_VERSION=1.19
并重试 docker
命令。
在 ubuntu distrib 上它发生在 apt 更新之后,如果 docker 运行 作为服务。 客户端已更新,但服务器的旧版本仍然是运行ning.
在这种情况下只需执行以下操作:
sudo service docker restart