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キャッシュの問題が原因です。エラーは this thread でコメントされています。
Dockerクライアントが1.9.xで、サーバーがdocker 1.8.xを実行している場合、エラーメッセージが表示されます。
誰かがこのエラーを見つけたが、docker-machine
を使用していない場合、クライアント側の環境変数で古いAPIバージョンを指定することで問題を解決する別の方法があります。
export DOCKER_API_VERSION=<version>
例えば:
export DOCKER_API_VERSION=1.19
docker
コマンドを再試行します。
参照 。
Ubuntu distribでは、dockerがサービスとして実行されている場合、aptの更新後に発生します。クライアントは更新されますが、古いバージョンのサーバーはまだ実行中です。
この場合、単に以下を実行します。
Sudo service docker restart
Dockerクライアントをアップグレードすると、古いdocker-machine VMを使用できなくなります。実際にdocker-machine upgrade vm-name
で強制的にアップグレードできますが、coreos、atomic、rancherosなどのdocker Hostとして他のディストリビューション(boot2dockerを除く)で作業している場合、失敗する可能性があります。
Carinaを使用して、複数のdocker clientバージョンを管理しています。
$ 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)
今から動作するはずです。