Docker for Mac Version rc2-beta16 - client too new

Expected behavior

Non-major upgrade of Docker for Mac should work with legacy servers.

Actual behavior

After upgrading to Version 1.12.0-rc2-beta16 (build: 9493), when trying to connect to a Parallels-driven Docker host, I get “Error response from daemon: client is newer than server (client API version: 1.24, server API version: 1.23)”

1.23 to 1.24 is a minor version upgrade (per semver) and the Docker for Mac version upgrade was also minor - it shouldn’t have broken things already working. Not to mention that: Docker for Mac is still in beta and it’s normal to expect people cannot use it exclusively so compatibility with other host types shouldn’t have been broken.

Information

  • the output of:
    • Moby Menu > Diagnose & Feedback on OSX
  • a reproducible case if this is a bug, Dockerfiles FTW
  • page URL if this is a docs issue or the name of a man page
  • host distribution and version ( OSX 10.10.x, OSX 10.11.x, Windows, etc )

Steps to reproduce the behavior

Hi Irakli,

I believe you can use the DOCKER_API_VERSION environment variable (see docs) to tell your client to behave as a 1.23 client. A 1.24 client is required to communicate with the API version 1.24 in Beta 16’s server.

Thanks for participating in the Docker for Mac Beta,

David

1 Like

David, many thanks for such quick response - really appreciate it.

I am going to test this (had to downgrade client since), but to be candid I am even more surprised now: so client supports both protocols and server told it which version server can support, but client didn’t fall back to that protocol version (basic content negotiation) just because an environmental variable was not set?

IMHO, client and server, in a distributed system should try their best to maintain backwards and forwards compatibility, especially if code to do so does actually exist.

Again - thanks for your response.

Had the same problem, tried setting DOCKER_API_VERSION, and it worked like a charm. Thanks David.