免责声明:我知道,有几个问题处理这个问题(例如“ 较新的Docker客户端与较旧的Docker主机 ”或“ 来自守护进程的错误响应:客户端比服务器新 ”)。 但是他们中的任何一个都不是针对完整的复杂性,我没有处理boot2docker。
情况
我有一个客户端计算机(我的笔记本电脑)和四个docker守护程序(1×本地,3×远程在不同的服务器上)的设置。 当我尝试pipe理一个远程docker守护进程时,我经常收到如下消息:
Error response from daemon: client is newer than server (client API version: X, server API version: Y)
(其中X > Y且通常|XY| ≤ 0.3 ;例如X = 1.21, Y = 1.19 )
在大多数情况下,原因是,我的客户端计算机有一个相当先进的系统,而服务器通常保持旧版本,不应该经常无法更新。 另外,如果我总是更新服务器,我将不得不将所有三台服务器更新到一起,而使用服务器的其他人又必须更新其客户端。 (虽然每个服务器的协作者组是不同的)
题
有什么方法可以设置我的客户端,它可以与不同的旧API版本进行通信?
(为什么docker项目至less在小版本中不能提供某种向后兼容?)
根据这个github评论docker客户可以谈到较新的服务器,但较新的客户端不能与较旧的服务器谈话。 所以你可以继续更新你的Docker服务器,但你也应该推动你的用户更新他们的客户端,因为兼容性肯定是有限制的。
有一个build议的拉取请求 ,允许您指定客户端在与服务器交谈时使用的API版本,但尚未被接受。