Ошибка Docker: клиент и сервер не имеют одинаковой версии



Так как я только что обновил настройки до 1.1.0 я:




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




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



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

642   14  

14 ответов:

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

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

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

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

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

sysV init:

service docker restart

systemd:

systemctl daemon-reload

systemctl restart docker

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

docker-machine upgrade MACHINE_NAME

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

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

у меня была последняя версия boot2docker, docker и virtual box, но я все еще получал это сообщение. Кажется, работает 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

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

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

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

export DOCKER_API_VERSION=1.21

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

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

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

вот решение

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

sudo find ~/ -name 'boot2docker.iso'

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

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

3) Удалите докер vm

docker-machine rm {default}

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

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

4) создать новый докер vm

docker-machine create --driver virtualbox default

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

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

но

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

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

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

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

boot2docker delete

boot2docker init

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

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

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

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

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

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

Ansible Ответ:

если вы пришли туда 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.

Comments

    Ничего не найдено.