web-dev-qa-db-ja.com

docker swarm initはIPアドレスエラーを選択できませんでした

Docker Swarmでの実験Docker Desktop for Macで。私はこれを試しました:

docker-machine create -d virtualbox node-1
docker-machine create -d virtualbox node-2
docker-machine create -d virtualbox node-3

eval $(docker-machine env node-1)

docker swarm init \
    --secret my-secret \
    --auto-accept worker \
    --listen-addr $(docker-machine ip node-1):2377

最後のコマンド(docker swarm init)このエラーを返します:

デーモンからのエラー応答:このシステムには複数のアドレスがあるため、アドバタイズするIPアドレスを選択できませんでした

何が起こっているのか分かりません。誰でもデバッグ方法を知っていますか?

18
Justin

2017-05-24更新:

以前の回答は、スウォームモードの初期状態に対するものでした。その後、secretおよびauto-acceptオプションは削除され、advertise-addrオプションが追加されました。これは次の方法で実行できます。

docker swarm init \
  --advertise-addr $(docker-machine ip node-1)

ポートのデフォルトは2377です。IPアドレスの代わりにネットワークインターフェース名を使用することもでき、swarmはそのインターフェースのIPアドレスを検索します。リスナーアドレスは引き続きオプションですが、デフォルトではすべてのインターフェイスでリッスンします。これは通常、推奨されるソリューションです。


元の回答:

まだdocker-machineでこれを行っていませんが、新しいswarmは/ etc/hostsのエントリに非常に敏感であることを知っています。 IPとホスト名がそのファイルにあり、1か所のみにあることを確認してください(ループバックや他の内部アドレスにもマッピングされていません)。 RC3の時点では、アドバタイズアドレスにもリスナーアドレスも使用しているため、このホスト名またはIPがswarm内のすべてのノードから参照できることを確認してください(まだ修正されていない場合は、修正されます)。

クライアントバージョンとサーバーバージョン間の問題のリスクを最小限に抑えるため、docker-machine環境変数ではなく、virtualbox内でコマンドを直接実行します。

19
BMitch

まず、ネットワーク上のマシンのパブリックIPを探します

ifconfig

192.168.1.x(docker0ではなく、Docker内部の仮想IP)のような物理的なものを選択します

docker swarm init --advertise-addr 192.1.68.1.x

(デフォルトはポート2377)

15
Genovo

Dockerのガイドによると: https://docs.docker.com/get-started/part4/#create-a-cluster

--advertise-addrを使用する必要があるというエラーが表示されますか?

Docker-machine lsを実行して仮想マシンのIPアドレスをコピーし、そのIPを使用して--advertise-addrでポート2377(swarm joinのポート)を指定して、docker swarm initコマンドを再度実行します。例えば:

docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100:2377"

7
Jesus Almaral

Dockerをenvで使用してdocker-machine-createdマシンに接続するときに同じエラーが発生しました。 docker-machine ssh <machine-name>の後、マシン上でdocker swarm initをローカルで実行すると、-advertise-addrに関するメッセージも表示されます。その後、ローカルコマンドdocker swarm init --listen-addr 192.168.99.100:2377 --advertise-addr 192.168.99.100:2377が機能しました。

5
user2389922

小切手 docker --versionそして、クライアントとサーバーが同じバージョンであることを確認します。異なる場合は、次のコマンドを使用して、マシンのdockerクライアントと一致するboot2dockerバージョンをプルします。

docker-machine create --driver virtualbox --virtualbox-boot2docker-url https://github.com/boot2docker/boot2docker/releases/download/v1.12.0-rc4/boot2docker-experimental.iso manager1

1
srivats