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 restartsystemd:
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.isosudo find ~/ -name 'boot2docker.iso'2) удалить
boot2docker.isoфайл, после взятия резервной копии его/Users/{user}/.docker/machine/cache/boot2docker.iso3) Удалите докер vm
docker-machine rm {default}это должно удалить и этот:
/Users/{user}/.docker/machine/machines/default/boot2docker.iso4) создать новый докер 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
единственное, что работало для меня, это удаление образа 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