Dockerエラー:クライアントとサーバーのバージョンが同じではありません


84

Dockerを1.1.0に更新したばかりなので、次のようになります。

デーモンからのエラー応答:クライアントとサーバーのバージョンが同じではありません(クライアント:1.13、サーバー:1.12)

これを修正する方法を知っていますか?

1.0.1に戻したところ、すべてが再び機能します。


を使用して、同じ問題が発生しboot2dockerます。それもあなたの場合ですか?
sigmus 2014

2
はい、boot2dockerも使用しています。dockerをアンインストールして再インストールした後(「再インストール」ではなく)、再び機能します。brewアンインストール
docker

4
たぶん、タイトル/質問を編集して、それがboot2docker問題であることを明確にする必要があります(将来の参照用)。
sigmus 2014

恥知らずなプラグイン:友人と私は、Dockerバージョンマネージャーと呼ばれるツールをまとめて、短期的にこれを支援しました。
カイルケリー2015

回答:


127

boot2dockerをインストールした後、VMをアップグレードする必要があるようです。

boot2docker 0.12以降からアップグレードする場合は、boot2docker stop && boot2docker download && boot2docker upを使用して(インストーラーを使用してアップグレードした後)既存の仮想マシンを更新できます。既存のデータが失われることはありません。

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


3
また、brew
Uninstall docker

5
dockerコマンドラインツールのbrewバージョンを使用する必要がなくなりました。Boot2Dockerは適切なバージョンを提供します。
アベルMuiño

持っているAn error occurred trying to connect: Get https://192.168.59.103:2376/v1.19/containers/json?all=1: x509: certificate is valid for 127.0.0.1, 10.0.2.15, not 192.168.59.103:/
Ain Tohvri 2015年

1
私もこの証明書の問題に遭遇しました。私は走りましたboot2docker deleteboot2docker initそしてそれは働き始めました。
ディーン・ワンプラー2015年

1
友人と私は、Dockerバージョンマネージャーと呼ばれるツールをまとめて、短期的にこれを支援しました。
カイルケリー2015

19

これは、Dockerを更新したが、サービスが再起動されていない場合に発生する可能性があります。次に、デーモン(更新前にすでに実行されていた)がまだ古いバージョンを実行している間に、更新されたクライアントを使用してDockerデーモンに接続しようとします。

これを修正するには、サービスを再起動します。

sysV init:

service docker restart

systemd:

systemctl daemon-reload

systemctl restart docker


1
以下のためにsystemdそれを行うことをお勧めしますsystemctl daemon-reload前にsystemctl restart docker
baldrs

最も単純な答えが最良の答えのようです:)
ダリス2015

13

docker-machineローカルのVirtualBoxベースのマシンを管理するために使用する場合、ソリューションはboot2dockerの場合と同じくらい簡単です。

docker-machine upgrade MACHINE_NAME

docker-machine最新のものをダウンロードboot2docker.isoして、アップグレードされたVMに新しいルートファイルシステムとして配置するように求められます。

ちなみに、VirtualBoxでバックアップされたDockerマシンには、ルートファイルシステムが読み取り専用です。つまり、マシンの再起動後も手動で更新することはできません。それは私にとって驚きでした。


12

私は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

これらの3行を一度に切り取って端末に貼り付けることができます。

それらが正しいことを確認するには:

$ env

11

最近のクライアントでDockerサーバーにクエリを実行しようとしていました。

  • サーバーAPIバージョン:1.21
  • クライアントAPIバージョン1.22

私にとっての解決策は、次のことでした。

export DOCKER_API_VERSION=1.21

参照:https//docs.docker.com/engine/reference/commandline/cli/


1
ありがとう!これで私の問題は解決しました
MajiK 2017

1
Dockerプロトコルがバージョン管理されており、下位互換性があるという事実は、さまざまなシナリオでDockerをアップグレードするために(当然のことながら)あらゆる種類の長さに及ぶ回答の量を考えると、十分に文書化されていないか、十分に表示されてはなりません...
Marcello Romani

3

ここでの正解は非常に古いものです(Dockerはboot2dockerの名前をDocker Machineに変更し、さらにいくつかの機能を追加しました)

とにかく私は同じ問題に直面し、修正するのに約3日かかりました:(

これが解決策です

1)の場所を見つける boot2docker.iso

sudo find ~/ -name 'boot2docker.iso'

2)boot2docker.isoファイルのバックアップを取った後、ファイルを削除します

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

3)DockerVMを削除します

docker-machine rm {default}

これにより、その1つも削除されます。

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

4)新しいdockervmを作成します

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"

https://api.github.com/repos/boot2docker/boot2docker/releases/latestにアクセスし、をクリックして、最後にファイルのダウンロードを選択して、boot2docker.isoファイルを手動でダウンロードしてみてくださいhtml_url

ファイルを取得したら、手動でファイルを配置します /Users/{user}/.docker/machine/cache/

最後にこのコマンドを再実行します docker-machine create --driver virtualbox default


2

私のために働いた唯一のことは、プロセスを強制終了し、「sudo servicedockerstart」で開始することでした。


2

私にとってうまくいったのは、VirtualBoxからboot2dockerイメージを削除し、~/.boot2dockerフォルダーを完全に削除して、最後にboot2docker init再度実行することだけでした。


1

boot2docker削除

boot2docker init

私のために働いた。もちろん、その前後にデーモンを停止/開始します。


1

これは私にとってはうまくいきました:それはただvmをシャットダウンし、それを削除して再作成し、そしてそれを再び起動します。shellinitを再実行するため、ENV変数が復旧したときに正しいIPアドレスで設定されます。

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

0

最新バージョンのboot2docker(v1.7.1)があり、クライアントサーバーの不一致エラーが発生しました。それから私はただ走りましたboot2docker upgrade、そしてそれは問題を解決しました。


0

私の解決策は、VirtualBoxのDockerVMで[閉じる]> [電源を切る]を実行してから、Kitematicを再起動することでした。これは私のためにそれを修正しました。


0

docker.ioWebサイトのバージョンと比較してbrewのバージョンが古くなっていることがわかりました。したがって、最善の方法はWebサイトにアクセスしてインストールファイルをダウンロードすることだと思います。


0

Ansible Answer:

あなたはそこで来た場合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

その理由は、Ansibleで使用されるdocker-pyモジュールがUbuntuapt-getリポジトリと同じバージョンではないことが多いためだと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.