web-dev-qa-db-fra.com

Docker - Réponse d'erreur du démon: le client est plus récent que le serveur

Après avoir créé une nouvelle machine avec Docker Machine, j'obtiens l'erreur suivante:

enter image description here

$ docker ps
Error response from daemon: client is newer than server(client API version 1.21, server API version: 1.19)

Comment puis-je réparer cela?

28
docker-machine upgrade <your-machine>

fera l'affaire. Cela peut arriver - comme pour moi - même si vous n'utilisez pas de RC et que votre machine a été nouvellement créée. Cela serait dû à un problème de cache ISO. L'erreur est commentée dans ce fil .

Si le client docker est 1.9.x et que le serveur exécute docker 1.8.x, le message d'erreur est observé.

40

Si quelqu'un obtient cette erreur, mais n'utilise pas docker-machine, il existe un autre moyen de résoudre le problème en spécifiant une ancienne version d'API dans une variable d'environnement côté client:

export DOCKER_API_VERSION=<version>

par exemple:

export DOCKER_API_VERSION=1.19

et relancez la commande docker.

Référence .

31
techraf

Sur ubuntu distrib, cela se produit après une mise à jour apt, si docker s'exécute en tant que service. Le client est mis à jour mais l'ancienne version du serveur est toujours en cours d'exécution.

Dans ce cas, faites simplement:

Sudo service docker restart
11
Clément Cazeaux

Si vous mettez à niveau votre client Docker, vous ne pourrez pas utiliser d'anciennes machines virtuelles Docker-Machine. En fait, vous pouvez forcer une mise à niveau avec docker-machine upgrade vm-name, mais si vous travaillez avec d'autres distributions (sauf boot2docker) en tant qu'hôte docker comme coreos, atomic, rancheros, cela peut échouer.

J'utilise Carina pour gérer plusieurs versions de client Docker.

installez simplement avec $ curl -sL https://download.getcarina.com/dvm/latest/install.sh | sh (installation linux et mac) et exécutez dvm ls pour répertorier les versions installées, dvm install 1.9.0 pour installer les versions et dvm use 1.8.1 pour changer la version de votre client.

Très facile et puissant. =)

Attention, pour votre sécurité, consultez toujours les scripts téléchargés sur Internet avant de les exécuter.

J'espère que cela aide

3
wsilva

Apparemment, cette erreur est due à docker-machine "s'endormir". Voici la commande magique qui le résout pour moi:

$ docker-machine restart default

Ou remplacez default par le nom de votre machine. Le résultat est:

$ docker-machine restart default
Restarting "default"...
Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

Comme suggéré, vous devrez peut-être:

$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_Host="tcp://....."
export DOCKER_CERT_PATH=".../.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your Shell:
# eval $(docker-machine env default)

Et donc vous exécutez finalement cette commande:

$ eval $(docker-machine env default)

À partir de maintenant, cela devrait fonctionner.

1
Dmitri Zaitsev