由于我刚刚将Docker更新为1.1.0,我得到:
来自守护程序的错误响应:客户端和服务器没有相同的版本(客户端:1.13,服务器:1.12)
你知道如何解决这个问题吗?
我切换回1.0.1,一切都恢复了。
答案 0 :(得分:127)
看起来您需要在安装boot2docker后升级VM:
如果从boot2docker 0.12或更高版本升级,则可以使用boot2docker stop&&更新现有虚拟机(使用安装程序升级后)。 boot2docker download&& boot2docker up - 你不会丢失现有数据。
(https://github.com/boot2docker/osx-installer/releases/tag/v1.1.0)
答案 1 :(得分:18)
如果您更新了Docker,但是服务尚未重新启动,则会发生这种情况。然后,您将尝试使用更新的客户端连接到Docker守护程序,而守护程序(在更新之前已经运行)仍在运行旧版本。
要解决此问题,请重新启动服务:
sysV init:
service docker restart
systemd:
systemctl daemon-reload
systemctl restart docker
答案 2 :(得分:12)
我有最新版本的boot2docker,docker和虚拟框,但仍然收到此消息。似乎正在运行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
答案 3 :(得分:10)
我试图用更新的客户端查询Docker服务器:
我的解决方案就是:
export DOCKER_API_VERSION=1.21
参考: https://docs.docker.com/engine/reference/commandline/cli/
答案 4 :(得分: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
答案 5 :(得分:2)
对我来说唯一有用的就是杀死进程并以“sudo service docker start”启动它。
答案 6 :(得分:2)
对我来说唯一有用的就是从VirtualBox中删除boot2docker图像,然后完全删除~/.boot2docker
文件夹,最后再次运行boot2docker init
。
答案 7 :(得分:1)
boot2docker delete
boot2docker init
为我工作。当然,在此之前和之后停止/启动守护。
答案 8 :(得分:1)
这对我有用:它只关闭vm,删除&重新创建它并重新启动它。它会重新运行shellinit,以便在ENV变量恢复时使用正确的IP地址进行设置。
$ boot2docker poweroff && \
boot2docker delete && \
boot2docker init && \
boot2docker up
$ eval `boot2docker shellinit`
答案 9 :(得分:0)
我发现brew中的版本与docker.io网站上的版本相比已过时。因此,我认为最好的方法是访问网站并下载安装文件。
答案 10 :(得分:0)
我有最新版本的boot2docker(v1.7.1)并且客户端服务器不匹配错误。然后我就跑了boot2docker upgrade
并解决了问题。
答案 11 :(得分: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存储库的版本不同。
答案 12 :(得分:0)
我的解决方案是关闭>在VirtualBox中的docker VM上关闭电源,然后重新启动Kitematic。这为我修好了。