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

    xiaoxiao2025-12-31  2

    服务通过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

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

    相关资源:python入门教程(PDF版)
    最新回复(0)