Ошибка Docker: у клиента и сервера нет такой же версии

Поскольку я только что обновил Docker до 1.1.0, я получаю:

Ответ на ошибку от демона: у клиента и сервера нет такой же версии (клиент: 1.13, server: 1.12)

Знаете ли вы, как это исправить?

Я переключился на 1.0.1, и все снова работает.

Ответ 1

Похоже, вам нужно обновить VM после установки boot2docker:

если вы обновляетесь с boot2docker 0.12 или новее, вы можете обновить существующую виртуальную машину (после обновления с помощью установщика) с помощью boot2docker stop && & boot2docker скачать && & & boot2docker up - и вы не потеряете существующие данные.

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

Ответ 2

Это может произойти, если вы обновили Docker, но служба не была перезапущена. Затем вы попытаетесь подключиться к демону Docker с обновленным клиентом, а демон (который уже был запущен до обновления) все еще запускает более старую версию.

Чтобы исправить это, перезапустите службу:

sysV init:

service docker restart

Systemd:

systemctl daemon-reload

systemctl restart docker

Ответ 3

Если вы используете docker-machine для управления локальными машинами на базе VirtualBox, решение так же просто, как и для boot2docker:

docker-machine upgrade MACHINE_NAME

Он просит docker-machine загрузить последнюю версию boot2docker.iso и поместить ее как новую корневую файловую систему в обновленную виртуальную машину.

Кстати, на докере-машине, поддерживаемой VirtualBox, есть только корневая файловая система. Это означает, что для любого обновления вручную невозможно перезагрузить компьютер. Это было для меня неожиданностью.

Ответ 4

У меня была последняя версия boot2docker, docker и виртуальной коробки, но она все еще получала это сообщение. Кажется, работает brew upgrade boot2docker не самая лучшая идея. При запуске boot2docker upgrade меня попросили установить кучу переменных окружения, а затем это сработало для меня.

Boot2docker попросил меня установить их (см. последние строки):

$ 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

Можно вырезать и вставлять эти три строки за один раз в ваш терминал.

Чтобы проверить, что они верны:

$ env

Ответ 5

Я пытался запросить сервер Docker с более поздним клиентом:

  • Версия API сервера: 1.21
  • Клиентский API версии 1.22

Решение для меня было просто:

export DOCKER_API_VERSION=1.21

Ссылка: https://docs.docker.com/engine/reference/commandline/cli/

Ответ 6

Единственное, что сработало для меня, - это убить процесс и запустить его с помощью "sudo service docker start".

Ответ 7

Единственное, что сработало для меня, - удалить образ boot2docker из VirtualBox, а затем полностью удалить папку ~/.boot2docker и, наконец, запустить boot2docker init снова.

Ответ 8

Правильный ответ здесь очень старый (Docker переименовал boot2docker в Docker Machine и добавил к нему еще несколько функций).

В любом случае я столкнулся с той же проблемой и взял меня около 3 дней, чтобы исправить:(

Здесь решение

1) найдите местоположение boot2docker.iso

sudo find ~/ -name 'boot2docker.iso'

2) удалите файл boot2docker.iso после его резервного копирования

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

3) удалите docker vm

docker-machine rm {default}

это также должно удалить это:

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

4) создать новый docker vm

docker-machine create --driver virtualbox default

сначала будет загружен новый boot2docker.iso, а затем он будет использоваться для создания вашего vm.

Теперь это должно исправить:)

НО

Если вы получаете какую-либо ошибку здесь:

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"

попробуйте загрузить файл boot2docker.iso вручную, перейдя в https://api.github.com/repos/boot2docker/boot2docker/releases/latest, затем нажав на html_url и, наконец, выбрав для загрузки файл.

после того, как вы запустите файл и поместите его вручную в /Users/{user}/.docker/machine/cache/

наконец, запустите эту команду docker-machine create --driver virtualbox default

Ответ 9

boot2docker delete

boot2docker init

работал у меня. остановить/запустить деамон до и после этого, конечно.

Ответ 10

Это сработало для меня: он просто закрывает vm down, удаляет и воссоздает его и запускает его снова. Он повторно запускает shellinit, поэтому ваши переменные ENV устанавливаются с правильным IP-адресом, когда он возвращается.

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

Ответ 11

Я считаю, что версия в brew устарела по сравнению с версией на веб-сайте docker.io. Поэтому я считаю, что лучший способ - перейти на сайт и загрузить установочный файл.

Ответ 12

У меня была последняя версия boot2docker (v1.7.1) и получена ошибка несоответствия клиентского сервера. Затем я просто запустил boot2docker upgrade и решил проблему.

Ответ 13

Ответ:

Если вы пришли туда Ansible, а не boot2docker, вот решение: используйте аргумент docker_api_version: auto

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

Я думаю, причина в том, что модуль docker-py, используемый Ansible, часто не в той же версии, что и репозиторий Ubuntu apt-get.

Ответ 14

Мое решение состояло в том, чтобы закрыть > Power Off на виртуальной машине докеров в VirtualBox, а затем перезапустить Kitematic. Это исправило это для меня.