84

由于我刚刚将 Docker 更新到 1.1.0,我得到:

来自守护进程的错误响应:客户端和服务器的版本不同(客户端:1.13,服务器:1.12)

你知道如何解决这个问题吗?

我切换回 1.0.1,一切都恢复正常了。

4

14 回答 14

127

看起来你需要在安装 boot2docker 后升级虚拟机:

如果您从 boot2docker 0.12 或更高版本升级,您可以使用 boot2docker stop && boot2docker download && boot2docker up 更新您现有的虚拟机(在使用安装程序升级后) - 您不会丢失现有数据。

https://github.com/boot2docker/osx-installer/releases/tag/v1.1.0

于 2014-07-06T11:39:48.243 回答
19

如果您已更新 Docker,但尚未重新启动服务,则可能会发生这种情况。然后,您将尝试使用更新的客户端连接到 Docker 守护程序,而守护程序(在更新之前已经运行)仍在运行旧版本。

要解决此问题,请重新启动服务:

sysV 初始化:

service docker restart

系统化:

systemctl daemon-reload

systemctl restart docker

于 2014-10-26T22:37:36.493 回答
13

如果您用于docker-machine管理本地基于 VirtualBox 的机器,则解决方案与 boot2docker 一样简单:

docker-machine upgrade MACHINE_NAME

它要求docker-machine下载最新版本boot2docker.iso并将其作为新的根文件系统放置在升级后的 VM 中。

顺便说一下,支持 VirtualBox 的 docker 机器的根文件系统是只读的。这意味着任何手动更新都不可能在机器重新启动后继续存在。这对我来说是一个惊喜。

于 2015-05-03T14:44:26.310 回答
12

我有最新版本的 boot2docker、docker 和 virtual box,但仍然收到此消息。看来跑步brew upgrade boot2docker不是最好的主意。运行时boot2docker upgrade,我被要求设置一堆环境变量,然后它对我有用。

Boot2docker 让我设置这些(见最后几行):

$ boot2docker upgrade
Latest release for boot2docker/boot2docker is v1.3.0
Downloading boot2docker ISO image...
Success: downloaded https://github.com/boot2docker/boot2docker/releases/download/v1.3.0/boot2docker.iso
    to /Users/.../.boot2docker/boot2docker.iso
Waiting for VM and Docker daemon to start...
.........oooooooooooooo
Started.
Writing /Users/.../.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/.../.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/.../.boot2docker/certs/boot2docker-vm/key.pem

To connect the Docker client to the Docker daemon, please set:
    export DOCKER_HOST=tcp://192.168.59.103:2376
    export DOCKER_CERT_PATH=/Users/.../.boot2docker/certs/boot2docker-vm
    export DOCKER_TLS_VERIFY=1

可以一次将这三行剪切并粘贴到您的终端中。

要检查它们是否正确:

$ env
于 2014-10-31T02:32:51.113 回答
11

我试图用更新的客户端查询 Docker 服务器:

  • 服务器 API 版本:1.21
  • 客户端 API 版本 1.22

我的解决方案是:

export DOCKER_API_VERSION=1.21

参考: https ://docs.docker.com/engine/reference/commandline/cli/

于 2016-03-31T13:26:25.117 回答
3

这里的正确答案非常古老(Docker 已将 boot2docker 重命名为 Docker Machine 并为其添加了更多功能)

无论如何,我遇到了同样的问题,花了我大约 3 天的时间来解决:(

这是解决方案

1) 找到位置boot2docker.iso

sudo find ~/ -name 'boot2docker.iso'

2)删除boot2docker.iso文件,备份后

/Users/{user}/.docker/machine/cache/boot2docker.iso

3) 删除你的 docker vm

docker-machine rm {default}

这也应该删除那个:

/Users/{user}/.docker/machine/machines/default/boot2docker.iso

4) 创建新的 docker vm

docker-machine create --driver virtualbox default

这将首先下载一个新的boot2docker.iso,然后使用它来创建您的虚拟机。

现在这应该解决它:)

如果您在这里遇到任何错误,例如:

Running pre-create checks...
(mega-docker) No default Boot2Docker ISO found locally, downloading the latest release...
Error with pre-create check: "Get https://api.github.com/repos/boot2docker/boot2docker/releases/latest: dial tcp: lookup api.github.com on 192.168.0.1:53: read udp 192.168.0.103:53947->192.168.0.1:53: i/o timeout"

尝试boot2docker.iso通过转到https://api.github.com/repos/boot2docker/boot2docker/releases/latest手动下载文件,然后单击html_url并最终选择下载文件。

拿到文件后,手动将其放入/Users/{user}/.docker/machine/cache/

最后重新运行这个命令docker-machine create --driver virtualbox default

于 2016-03-30T03:08:32.497 回答
2

唯一对我有用的是终止进程并使用“sudo service docker start”启动它。

于 2015-01-20T03:41:29.663 回答
2

唯一对我有用的是从 VirtualBox 中删除 boot2docker 映像,然后完全删除~/.boot2docker文件夹,最后boot2docker init再次运行。

于 2015-04-19T20:21:24.500 回答
1

boot2docker 删除

boot2docker 初始化

为我工作。当然,在此之前和之后停止/启动守护进程。

于 2015-05-27T09:53:01.607 回答
1

这对我有用:它只是关闭虚拟机,删除并重新创建它并再次启动它。它重新运行 shellinit,以便在它恢复时使用正确的 IP 地址设置您的 ENV 变量。

$ boot2docker poweroff && \
    boot2docker delete && \
    boot2docker init && \
    boot2docker up
$ eval `boot2docker shellinit`
于 2015-07-10T21:01:15.993 回答
0

我发现 brew 中的版本与 docker.io 网站上的版本相比已经过时了。因此,我认为最好的方法是访问网站并下载安装文件。

于 2014-11-04T08:30:01.457 回答
0

我有最新版本的 boot2docker(v1.7.1) 并得到客户端服务器不匹配错误。然后我就跑了boot2docker upgrade,它解决了问题。

于 2015-08-10T14:58:15.427 回答
0

答案:

如果您是通过Ansible而不是 boot2docker 来的,那么解决方案是:使用docker_api_version: auto参数

- name: Mongo data container
  docker:
    docker_api_version: auto
    name: mongo-primary-dc
    image: debian:wheezy
    state: present
    volumes:
    - /data

我猜原因是 Ansible 使用的 docker-py 模块通常与 Ubuntu apt-get 存储库的版本不同。

于 2016-01-22T11:35:22.727 回答
0

我的解决方案是在 VirtualBox 中的 docker VM 上执行 Close > Power Off,然后重新启动 Kitematic。这为我修好了。

于 2017-04-04T18:12:02.830 回答