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アドレスを選択できませんでした
何が起こっているのか分かりません。誰でもデバッグ方法を知っていますか?
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内でコマンドを直接実行します。
まず、ネットワーク上のマシンのパブリックIPを探します
ifconfig
192.168.1.x(docker0ではなく、Docker内部の仮想IP)のような物理的なものを選択します
docker swarm init --advertise-addr 192.1.68.1.x
(デフォルトはポート2377)
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"
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
が機能しました。
小切手 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