После создания новой машины с Docker Machine я получаю следующую ошибку:
$ docker ps
Error response from daemon: client is newer than server(client API version 1.21, server API version: 1.19)
Как я могу это исправить?
После создания новой машины с Docker Machine я получаю следующую ошибку:
$ docker ps
Error response from daemon: client is newer than server(client API version 1.21, server API version: 1.19)
Как я могу это исправить?
docker-machine upgrade <your-machine>
сделает трюк. Это может произойти, как и для меня, даже если вы не используете RC, и ваша машина была недавно создана. Это связано с проблемой кеша ISO. Ошибка прокомментирована в этот поток.
Если клиентом докера является 1.9.x, а на сервере работает докер 1.8.x, появляется сообщение об ошибке.
Если кто-то получает эту ошибку, но не использует docker-machine
, есть другой способ решить проблему, указав более старую версию API в переменной среды на стороне клиента:
export DOCKER_API_VERSION=<version>
например:
export DOCKER_API_VERSION=1.19
и повторите команду docker
.
В дистрибутиве ubuntu это происходит после обновления apt, если докер запускается как служба. Клиент обновляется, но старая версия сервера все еще запущена.
В этом случае просто выполните:
sudo service docker restart
Если вы обновите клиент докеры, вы не сможете использовать старые виртуальные машины докеров. На самом деле вы можете принудительно выполнить обновление с помощью docker-machine upgrade vm-name
, но если вы работаете с другими дистрибутивами (кроме boot2docker) как хост-докер, например, coreos, atom, rancheros, он может выйти из строя.
Я использую Carina для управления более чем одной версией клиента докеров.
просто установите с помощью $ curl -sL https://download.getcarina.com/dvm/latest/install.sh | sh
(установка linux и mac) и запустите dvm ls
, чтобы просмотреть установленные версии, dvm install 1.9.0
, чтобы установить версии и dvm use 1.8.1
, чтобы изменить вашу версию клиента.
Очень легкий и мощный. =)
Внимание, для вашей безопасности всегда просматривайте скрипты, загруженные из Интернета, прежде чем запускать их.
Надеюсь, что это поможет
По-видимому, эта ошибка связана с docker-machine
"засыпанием". Вот волшебная команда, которая решает это для меня:
$ docker-machine restart default
Или замените default
на имя вашего устройства.
Результат:
$ docker-machine restart default
Restarting "default"...
Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
Как и было предложено, вам может потребоваться:
$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://....."
export DOCKER_CERT_PATH=".../.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)
Итак, вы, наконец, запустите эту команду:
$ eval $(docker-machine env default)
Теперь он должен работать.
Этот комментарий предназначен только для начинающих, у которых установлена машина по умолчанию.
docker-machine upgrade default
У меня была такая же проблема с 1.10.0-rc4, и оказалось, что boot2docker не был правильно обновлен при установке нового Docker Toolbox. Мне пришлось удалить boot2docker вручную:
sudo rm -rf /usr/local/share/boot2docker
Вы также можете удалить остальную часть панели инструментов:
sudo rm -rf /usr/local/bin/docker*
sudo rm -rf /Applications/Docker
И, наконец, установите Docker Toolbox нужной версии.
Обратитесь к официальному удалению script для в GitHub для OS X здесь.