Estoy tratando de descubrir cómo ejecutar compilaciones de desarrollo de Docker y Docker-Compose juntas en Ubuntu 14.10 para, con suerte, solucionar un error:https://github.com/docker/compose/pull/1349
Última versión de desarrollo de Docker
docker -v
# Docker version 1.7.0-dev, build 6a7a757
# docker-compose -v
docker-compose version: 1.3.0rc3
CPython version: 2.7.8
OpenSSL version: OpenSSL 1.0.1f 6 Jan 2014
Pero a Docker no le gusta la versión del servidor.
# which docker
/usr/bin/docker
# sudo /usr/bin/docker -d &
WARN[0000] Your kernel does not support swap memory limit.
INFO[0000] Loading containers: start.
.......................................................................INFO[0000] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers : [nameserver 8.8.8.8 nameserver 8.8.4.4]
INFO[0000] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers : [nameserver 8.8.8.8 nameserver 8.8.4.4]
WARN[0000] Failed to allocate and map port 8080: Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: address already in use
INFO[0000] Loading containers: done.
INFO[0000] Daemon has completed initialization
INFO[0000] Docker daemon commit=6a7a757 execdriver=native-0.2 graphdriver=aufs version=1.7.0-dev
# ps auxf | grep docker
root 24854 0.0 0.0 73360 3800 pts/14 S 09:59 0:00 | \_ sudo /usr/bin/docker -d
root 24866 0.0 0.1 439152 19556 pts/14 Sl 09:59 0:00 | | \_ /usr/bin/docker -d
root 24982 0.0 0.0 109264 14584 pts/14 Sl 09:59 0:00 | | \_ docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 32768 -container-ip 172.17.0.2 -container-port 29015
root 25102 0.0 0.1 109264 16552 pts/14 Sl 09:59 0:00 | | \_ docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 32769 -container-ip 172.17.0.2 -container-port 28015
root 25131 0.0 0.0 109264 14516 pts/14 Sl 09:59 0:00 | | \_ docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 32770 -container-ip 172.17.0.2 -container-port 8080
# docker ps
Error response from daemon: client and server don't have same version (client : 1.20, server: 1.15)
Y la versión candidata de desarrollo actual, docker-compose, espera la versión 1.18 del servidor.
# which docker-compose
/usr/local/bin/docker-compose
# docker-compose ps
client and server don't have same version (client : 1.18, server: 1.15)
Incluso después de detener el demonio, sigo recibiendo el mismo mensaje de error.
# sudo killall docker
INFO[0288] Processing signal 'terminated'
# docker ps
Error response from daemon: client and server don't have same version (client : 1.20, server: 1.15)
Sé que puedo degradar el cliente Docker para que coincida con la versión 1.18 que requiere Docker-Compose, pero todavía no entiendo por qué la versión del servidor informa como 1.15 cuando el mismo cliente binario parece ser 1.20.
Pregunta complementaria: ¿cómo es que el cliente de Docker sigue recibiendo un mensaje de versión incorrecta del servidor cuando se detiene el demonio de Docker?
Respuesta1
Intente reiniciar el servicio Docker después de actualizar Docker ( sudo service docker restart
). Esa puede ser la causa de:
Todavía tienes una versión antigua de Docker ejecutándose.
Tuve un problema muy similar, actualicé Docker y seguí apareciendo el mismo mensaje de error hasta que reinicié el servicio.
Respuesta2
El problema en este caso fue que la variable de entorno $DOCKER_HOST
apuntaba a otro sistema que estaba usando una versión diferente, por lo que no aparecían procesos en ps
API incompatibles.
Eliminar la variable unset DOCKER_HOST
resolvió el problema.