Docker错误:客户端和服务器没有相同的版本

因为我只是更新了Docker到1.1.0我得到:

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

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

我切换回到1.0.1,一切工作。

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

如果从boot2docker 0.12或更高版本进行升级,则可以使用boot2docker stop && boot2docker下载&& boot2docker来更新现有虚拟机(使用安装程序进行升级后) – 而且不会丢失现有数据。

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

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

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

sysV init:

service docker restart

systemd:

systemctl daemon-reload

systemctl restart docker

如果您使用docker-machine来pipe理本地基于VirtualBox的机器,则解决scheme与boot2docker一样简单:

 docker-machine upgrade MACHINE_NAME 

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

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

我有最新版本的boot2docker,docker和虚拟箱,但仍然收到此消息。 看来运行brew upgrade boot2docker不是最好的主意。 当运行boot2docker upgrade ,我被要求设置一堆环境variables,然后它为我工作。

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 

可以一次把这三行剪切粘贴到terminal中。

要检查他们是正确的:

 $ env 

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

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

对我来说,解决scheme只是:

export DOCKER_API_VERSION=1.21

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

唯一对我有用的是杀死这个进程,并开始“sudo服务docker启动”。

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

这里的正确答案是非常老的(Docker已经将boot2docker重命名为Docker Machine,并增加了一些function)

无论如何,我面临同样的问题,并带我约3天来解决:(

这是解决scheme

1)findboot2docker.iso的位置

 sudo find ~/ -name 'boot2docker.iso' 

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

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

3)删除你的docker虚拟机

docker-machine rm {default}

这也应该删除一个:

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

4)创build新的docker vm

 docker-machine create --driver virtualbox default 

这将首先下载一个新的boot2docker.iso ,然后用它来创build你的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" 

尝试通过https://api.github.com/repos/boot2docker/boot2docker/releases/latest手动下载;boot2docker.iso文件,然后点击html_url ,最后select下载文件。

一旦你得到的文件去手动放置在/Users/{user}/.docker/machine/cache/

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

boot2docker删除

boot2docker初始化

为我工作。 当然,之前和之后停止/启动deamon。

这工作对我来说:它只是closures虚拟机,删除和重新创build它,并再次启动它。 它重新运行shellinit,以便您的ENVvariables在返回时使用正确的IP地址进行设置。

 $ boot2docker poweroff && \ boot2docker delete && \ boot2docker init && \ boot2docker up $ eval `boot2docker shellinit` 

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

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

我发现brew中的版本与docker.io网站上的版本相比已经过时了。 所以我觉得最好的办法是去网站下载安装文件。

Ansible答案:

如果你是通过Ansible而不是boot2docker访问的,这里是解决scheme:使用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版本库不同。