Tenemos un servidor Docker un poco más antiguo que se ejecuta en RHEL 6.6. Nuestro equipo de operaciones no lo respalda bien en este momento, por lo que no podemos actualizar fácilmente. En este momento ejecuta Docker 1.3.2 desde un repositorio EPEL. Si lo hago, hace todo lo que necesito para obtener pruebas de concepto que, con suerte, me ayudarán a impulsar la administración para mejorar el soporte de infraestructura para Docker en el futuro.
Lo configuré para escuchar en TCP / TLS, y puedo conectarme a él, pero se niega a ejecutar comandos dados por mi cliente local de docker.
$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.4
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
FATA[0000] Error response from daemon: client and server don't have same version (client : 1.16, server: 1.15)
Sé que la conexión en sí funciona porque fig
funciona:
$ cat > fig.yml
test:
image: busybox
$ fig run --rm test sh
/ # hostname -f
084f75fb59d4
¿Hay alguna forma de decirle al cliente de docker más nuevo que use la versión anterior de la API de docker hasta que pueda acceder a un host de docker más nuevo?
Respuestas:
Desde Docker 1.10.0, existe una opción para anular la versión de API utilizada para la comunicación del cliente Docker con el motor Docker.
Simplemente usando la variable de entorno DOCKER_API_VERSION.
Ex.:
Referencia: https://docs.docker.com/engine/reference/commandline/cli/#environment-variables
EDITAR
Desde Docker 1.13, CLI tiene una compatibilidad con versiones anteriores mejorada. De acuerdo con https://blog.docker.com/2017/01/whats-new-in-docker-1-13 :
fuente
Si no puede actualizar fácilmente el servidor, debería poder degradar fácilmente a su cliente. Docker es de código abierto en GitHub . La versión 1.3.3 fue la última con la API del cliente 1.15. Aquí hay un enlace directo a la etiqueta.
Simplemente haga un clon local del repositorio, haga una compilación, haga un binario y luego cambie el binario producido:
fuente