使用dvm解决Docker的Daemon和Client版本不一致问题-阿里云开发者社区

开发者社区> 云原生> 正文

使用dvm解决Docker的Daemon和Client版本不一致问题

简介: 服务通过Docker Swarm部署后,如果在开发机本地执行类似如下命令: ``` docker -H tcp://swarm.alibaba.net:8443 exec -it $containerId /bin/bash ``` 如果开发机本地Docker版本高于服务器上的版本(这是很容易发生的,稍微Geek的同学是无法容忍本地软件不是最新这一事实的!),就会得到类似如下错误:

服务通过Docker Swarm部署后,如果在开发机本地执行类似如下命令:

docker -H tcp://swarm.alibaba.net:8443 exec -it $containerId /bin/bash

如果开发机本地Docker版本高于服务器上的版本(这是很容易发生的,稍微Geek的同学是无法容忍本地软件不是最新这一事实的!),就会得到类似如下错误:

Error response from daemon: client is newer than server (client API version: 1.24, server API version: 1.21)

怎么办?

你无法要求服务器为此而升级,也无法容忍为此降级本地或者申请一台和服务器的Docker相同版本的ECS——如果你不是这样想的,我很遗憾。

最合理的办法是本地安装多版本,并且可以随意切换。

首先给出本地当前版本

$ docker version
Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.7.1
 Git commit:   6f9534c
 Built:        Thu Sep 15 11:20:26 2016
 OS/Arch:      darwin/amd64
 Experimental: true

安装dvm

curl -sL https://download.getcarina.com/dvm/latest/install.sh | sh
source /Users/erichan/.dvm/dvm.sh

安装和服务器相同版本的Docker,并且换过去

$ dvm install 1.9.0

$ dvm use 1.9.0                                                                                                                            
Now using Docker 1.9.0

$ dvm ls                                                                                                                                   
->    1.9.0
    system (1.12.1)

再来看本地当前版本

lient:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.4.3
 Git commit:   76d6bc9
 Built:        Tue Nov  3 19:20:09 UTC 2015
 OS/Arch:      darwin/amd64

最后执行最初的命令。祝好!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云原生
使用钉钉扫一扫加入圈子
+ 订阅

云原生时代,是开发者最好的时代

其他文章