Docker-Fehler: Client und Server haben nicht dieselbe Version


84

Da ich Docker gerade auf 1.1.0 aktualisiert habe, bekomme ich:

Fehlerantwort vom Daemon: Client und Server haben nicht dieselbe Version (Client: 1.13, Server: 1.12)

Wissen Sie, wie Sie das beheben können?

Ich habe wieder auf 1.0.1 umgestellt und alles funktioniert wieder.


Ich habe das gleiche Problem mit boot2docker. Ist das auch dein Fall?
Sigmus

2
ja ich benutze auch boot2docker. Nach der Deinstallation von Docker und der erneuten Installation (nicht 'Neuinstallation') funktioniert es wieder. brauen deinstallieren docker && brauen installieren
docker

4
Vielleicht sollten Sie den Titel / die Frage bearbeiten, um zu verdeutlichen, dass es sich um ein boot2dockerProblem handelt (zum späteren Nachschlagen).
Sigmus

Schamloser Plug: Ein Freund und ich haben ein Tool namens Docker Version Manager zusammengestellt , um kurzfristig dabei zu helfen.
Kyle Kelley

Antworten:


127

Es sieht so aus, als müssten Sie die VM nach der Installation von boot2docker aktualisieren:

Wenn Sie ein Upgrade von boot2docker 0.12 oder höher durchführen, können Sie Ihre vorhandene virtuelle Maschine (nach dem Upgrade mit dem Installationsprogramm) mit boot2docker stop && boot2docker download && boot2docker up aktualisieren - und Sie werden Ihre vorhandenen Daten nicht verlieren.

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


3
auch brauen deinstallieren docker && brauen installieren docker hat den Job gemacht
soenke

5
Sie müssen die Brew-Version des Docker-Befehlszeilentools nicht mehr verwenden. Boot2Docker bietet die richtige Version.
Abel Muiño

Mit An error occurred trying to connect: Get https://192.168.59.103:2376/v1.19/containers/json?all=1: x509: certificate is valid for 127.0.0.1, 10.0.2.15, not 192.168.59.103: /
Ain Tohvri

1
Ich bin auch auf dieses Zertifikat gestoßen. Ich rannte boot2docker deletedann boot2docker initund es fing an zu funktionieren.
Dean Wampler

1
Ein Freund und ich haben ein Tool namens Docker Version Manager zusammengestellt , um kurzfristig dabei zu helfen.
Kyle Kelley

19

Dies kann passieren, wenn Sie Docker aktualisiert haben, der Dienst jedoch nicht neu gestartet wurde. Sie werden dann versuchen, mit dem aktualisierten Client eine Verbindung zum Docker-Dämon herzustellen, während auf dem Dämon (der bereits vor dem Update ausgeführt wurde) noch die ältere Version ausgeführt wird.

Starten Sie den Dienst neu, um dies zu beheben:

sysV init:

service docker restart

systemd:

systemctl daemon-reload

systemctl restart docker


1
Denn systemdes wird empfohlen, systemctl daemon-reloadvorsystemctl restart docker
Baldrs

Scheint, als ob die einfachste Antwort die beste Antwort ist :)
Dariss

13

docker-machineWenn Sie lokale VirtualBox-basierte Computer verwalten, ist die Lösung so einfach wie für boot2docker:

docker-machine upgrade MACHINE_NAME

Es wird docker-machineaufgefordert, die neueste Version herunterzuladen boot2docker.isound als neues Root-Dateisystem in der aktualisierten VM zu platzieren.

Auf dem von VirtualBox unterstützten Docker-Computer ist das Root-Dateisystem übrigens schreibgeschützt. Das heißt, es ist nicht möglich, dass ein manuelles Update den Neustart des Computers überlebt. Das war eine Überraschung für mich.


12

Ich hatte die neueste Version von boot2docker, docker und virtual box, erhielt aber immer noch diese Nachricht. Es scheint, dass Laufen brew upgrade boot2dockernicht die beste Idee ist. Beim Ausführen boot2docker upgradewurde ich gebeten, eine Reihe von Umgebungsvariablen festzulegen, und dann funktionierte es für mich.

Boot2docker hat mich gebeten, diese einzustellen (siehe die letzten Zeilen):

$ 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

Es ist möglich, diese drei Zeilen auf einmal auszuschneiden und in Ihr Terminal einzufügen.

Um zu überprüfen, ob sie korrekt sind:

$ env

11

Ich habe versucht, einen Docker-Server mit einem neueren Client abzufragen:

  • Server-API-Version: 1.21
  • Client-API-Version 1.22

Die Lösung für mich war nur:

export DOCKER_API_VERSION=1.21

Referenz: https://docs.docker.com/engine/reference/commandline/cli/


1
Vielen Dank! Dies hat mein Problem
behoben

1
Die Tatsache, dass das Docker-Protokoll versioniert und abwärtskompatibel ist, muss angesichts der Menge an Antworten, die (verständlicherweise) alle möglichen Längen benötigen, um Docker in verschiedenen Szenarien zu aktualisieren, nicht gut dokumentiert oder sichtbar genug sein
Marcello Romani

3

Die richtige Antwort hier ist sehr alt (Docker hat boot2docker in Docker Machine umbenannt und einige weitere Funktionen hinzugefügt) .

Wie auch immer, ich hatte das gleiche Problem und brauchte ungefähr 3 Tage, um es zu beheben :(

Hier ist die Lösung

1) Finden Sie den Standort des boot2docker.iso

sudo find ~/ -name 'boot2docker.iso'

2) Löschen Sie die boot2docker.isoDatei, nachdem Sie eine Sicherungskopie erstellt haben

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

3) Löschen Sie Ihren Docker vm

docker-machine rm {default}

dies sollte auch diesen löschen:

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

4) Erstellen Sie eine neue Docker-VM

docker-machine create --driver virtualbox default

boot2docker.isoDadurch wird zuerst eine neue heruntergeladen und dann zum Erstellen Ihrer VM verwendet.

Nun sollte dies das Problem beheben :)

ABER

Wenn Sie hier einen Fehler erhalten, wie:

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"

Versuchen Sie, die boot2docker.isoDatei manuell herunterzuladen, indem Sie zu https://api.github.com/repos/boot2docker/boot2docker/releases/latest gehen, dann auf klicken html_urlund schließlich die Datei herunterladen.

Sobald Sie die Datei erhalten haben, legen Sie sie manuell ab /Users/{user}/.docker/machine/cache/

Führen Sie diesen Befehl schließlich erneut aus docker-machine create --driver virtualbox default


2

Das einzige, was für mich funktioniert hat, war, den Prozess zu beenden und ihn mit "sudo service docker start" zu starten.


2

Das einzige, was für mich funktioniert hat, war, das boot2docker-Image von VirtualBox zu entfernen, dann den ~/.boot2dockerOrdner vollständig zu löschen und schließlich boot2docker initwieder auszuführen .


1

boot2docker löschen

boot2docker init

arbeitete für mich. Stoppen / Starten Sie den Deamon natürlich davor und danach.


1

Das hat bei mir funktioniert: Es fährt einfach die VM herunter, löscht und erstellt sie neu und startet sie erneut. Shellinit wird erneut ausgeführt, sodass Ihre ENV-Variablen beim erneuten Start mit der richtigen IP-Adresse festgelegt werden.

$ boot2docker poweroff && \
    boot2docker delete && \
    boot2docker init && \
    boot2docker up
$ eval `boot2docker shellinit`

0

Ich hatte die neueste Version von boot2docker (v1.7.1) und bekam den Client Server Server Mismatch Fehler. Dann bin ich einfach gelaufen boot2docker upgradeund es hat das Problem gelöst.


0

Meine Lösung bestand darin, die Docker-VM in VirtualBox zu schließen> auszuschalten und dann Kitematic neu zu starten. Das hat es für mich behoben.


0

Ich finde, dass die Version in Brew im Vergleich zu der auf der Website docker.io veraltet ist. Daher denke ich, dass der beste Weg ist, auf die Website zu gehen und die Installationsdatei herunterzuladen.


0

Ansible Antwort:

Wenn Sie mit Ansible und nicht mit boot2docker dorthin gekommen sind, ist hier die Lösung: Verwenden Sie das docker_api_version: autoArgument

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

Ich denke, der Grund dafür ist, dass das von Ansible verwendete Docker-Py-Modul häufig nicht dieselbe Version wie das Ubuntu Apt-Get-Repository hat.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.