web-dev-qa-db-fra.com

Erreur Docker: le client et le serveur n'ont pas la même version

Depuis que je viens de mettre à jour Docker à 1.1.0, je reçois:

Réponse d'erreur du démon: le client et le serveur n'ont pas la même version (client: 1.13, serveur: 1.12)

Savez-vous comment résoudre ce problème?

Je suis revenu à la version 1.0.1 et tout fonctionne à nouveau.

83
soenke

Il semble que vous deviez mettre à niveau le VM après avoir installé boot2docker:

si vous effectuez une mise à niveau à partir de boot2docker version 0.12 ou ultérieure, vous pouvez mettre à jour votre machine virtuelle existante (après la mise à niveau à l'aide du programme d'installation) à l'aide de boot2docker stop && boot2docker download && boot2docker up - sans perdre vos données existantes.

( https://github.com/boot2docker/osx-installer/releases/tag/v1.1.0 )

127
Abel Muiño

Cela peut arriver si vous avez mis à jour Docker, mais que le service n'a pas été redémarré. Vous essayerez ensuite de vous connecter au démon Docker avec le client mis à jour, alors que le démon (qui fonctionnait déjà avant la mise à jour) exécute toujours l'ancienne version.

Pour résoudre ce problème, redémarrez le service:

sysV init:

service docker restart

systemd:

systemctl daemon-reload

systemctl restart docker

18
BakaKuna

Si vous utilisez docker-machine pour gérer des machines basées sur VirtualBox locales, la solution est aussi simple que pour boot2docker:

docker-machine upgrade MACHINE_NAME

Il demande à docker-machine de télécharger le dernier boot2docker.iso et de le placer en tant que nouveau système de fichiers racine dans la machine virtuelle mise à niveau.

En passant, le système de docker sauvegardé par VirtualBox a son système de fichiers racine en lecture seule. Cela signifie qu'il n'est pas possible pour une mise à jour manuelle de survivre au redémarrage de la machine. C'était une surprise pour moi.

13
Peter

J'avais la dernière version de boot2docker, docker et virtual box mais je recevais toujours ce message. Il semble que l'exécution de brew upgrade boot2docker n'est pas la meilleure idée. Lors de l'exécution de boot2docker upgrade, il m'a été demandé de définir plusieurs variables d'environnement, puis cela a fonctionné pour moi. 

Boot2docker m'a demandé de définir ceux-ci (voir les dernières lignes):

$ boot2docker upgrade
Latest release for boot2docker/boot2docker is v1.3.0
Downloading boot2docker ISO image...
Success: downloaded https://github.com/boot2docker/boot2docker/releases/download/v1.3.0/boot2docker.iso
    to /Users/.../.boot2docker/boot2docker.iso
Waiting for VM and Docker daemon to start...
.........oooooooooooooo
Started.
Writing /Users/.../.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/.../.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/.../.boot2docker/certs/boot2docker-vm/key.pem

To connect the Docker client to the Docker daemon, please set:
    export DOCKER_Host=tcp://192.168.59.103:2376
    export DOCKER_CERT_PATH=/Users/.../.boot2docker/certs/boot2docker-vm
    export DOCKER_TLS_VERIFY=1

Il est possible de couper et coller ces trois lignes en une fois dans votre terminal.

Pour vérifier qu'ils sont corrects:

$ env
12
Rimian

J'essayais d'interroger un serveur Docker avec un client plus récent:

  • Version de l'API du serveur: 1.21
  • API client version 1.22

La solution pour moi était juste:

export DOCKER_API_VERSION=1.21

Référence: https://docs.docker.com/engine/reference/commandline/cli/

10
Marcello Romani

La réponse correcte ici est très ancienne (Docker a renommé boot2docker en Docker Machine et y a ajouté quelques fonctionnalités supplémentaires)}. 

Quoi qu'il en soit, j'ai rencontré le même problème et il m'a fallu environ 3 jours pour résoudre le problème :( 

Voici la solution

1) trouvez l’emplacement du boot2docker.iso

Sudo find ~/ -name 'boot2docker.iso'

2) supprimez le fichier boot2docker.iso après l'avoir sauvegardé

/Users/{user}/.docker/machine/cache/boot2docker.iso

3) supprimer votre docker vm

docker-machine rm {default}

cela devrait aussi supprimer celui-là:

/Users/{user}/.docker/machine/machines/default/boot2docker.iso

4) créer un nouveau docker vm

docker-machine create --driver virtualbox default

cela téléchargera d'abord un nouveau boot2docker.iso et l'utilisera ensuite pour créer votre machine virtuelle.

Maintenant, cela devrait résoudre ce problème :)

MAIS

Si vous obtenez une erreur ici comme:

Running pre-create checks...
(mega-docker) No default Boot2Docker ISO found locally, downloading the latest release...
Error with pre-create check: "Get https://api.github.com/repos/boot2docker/boot2docker/releases/latest: dial tcp: lookup api.github.com on 192.168.0.1:53: read udp 192.168.0.103:53947->192.168.0.1:53: i/o timeout"

essayez de télécharger manuellement le fichier boot2docker.iso en allant à https://api.github.com/repos/boot2docker/boot2docker/releases/latest puis en cliquant sur le html_url et en choisissant de télécharger le fichier.

une fois que vous avez récupéré le fichier, placez-le manuellement dans /Users/{user}/.docker/machine/cache/

enfin relancez cette commande docker-machine create --driver virtualbox default

3
Mahmoud Zalt

La seule chose qui a fonctionné pour moi a été de mettre fin au processus et de le lancer avec «démarrage du service fixe Sudo».

2
pawl

La seule chose qui a fonctionné pour moi a été de supprimer l’image boot2docker de VirtualBox, puis de supprimer complètement le dossier ~/.boot2docker et enfin de réexécuter boot2docker init.

2
dkinzer

boot2docker supprimer 

boot2docker init

a travaillé pour moi. arrêter/démarrer le démon avant et après cela bien sûr.

1
apflieger

Cela a fonctionné pour moi: il suffit de fermer la machine virtuelle, de la supprimer et de la recréer, puis de la redémarrer. Il réexécute shellinit afin que vos variables ENV soient configurées avec l'adresse IP correcte lors de la réinitialisation.

$ boot2docker poweroff && \
    boot2docker delete && \
    boot2docker init && \
    boot2docker up
$ eval `boot2docker shellinit`
1
0xADADA

Réponse Ansible:

Si vous y êtes arrivé par Ansible et non par boot2docker, voici la solution: utilisez l'argument docker_api_version: auto

- name: Mongo data container
  docker:
    docker_api_version: auto
    name: mongo-primary-dc
    image: debian:wheezy
    state: present
    volumes:
    - /data

Je suppose que la raison en est que le module docker-py utilisé par Ansible n’a souvent pas la même version que le référentiel Ubuntu apt-get.

0
Nicolas Zozol

Ma solution consistait à effectuer Fermer> Éteindre le docker VM dans VirtualBox, puis à redémarrer Kitematic. Cela a résolu le problème pour moi.

0

Je trouve que la version en infusion est obsolète par rapport à celle du site Web docker.io. Par conséquent, je pense que le meilleur moyen est d’aller sur le site Web et de télécharger le fichier d’installation.

0
Tommy

J'avais la dernière version de boot2docker (v1.7.1) et j'ai eu l'erreur d'incompatibilité serveur-client. Ensuite, j'ai juste lancé boot2docker upgrade et le problème a été résolu.

0
Samitha