0

サンドボックスで docker swarm クラスターを構築しています。ディスカバリー用のマシンに 1 つの飼育係、1 つのスウォーム マスター、2 つのスウォーム ノードがあります。それらを接続しようとしましたが、swarm マスターで docker run コマンドを実行しようとすると、作業がノードに分散されません。またdocker info、swarm マスターで実行すると、ノードが接続されていないことがわかります。何が間違っているのかわかりません。私の問題を再現する手順は次のとおりです。

空のpwd/data フォルダーとpwd、zoo.cfg を含む /config フォルダーがあります。

tickTime=2000
dataDir=/tmp/zookeeper
clientPort=2181
initLimit=5

-

#---- CREATE ZOO ---

docker-machine create --driver virtualbox zoo1
docker-machine start zoo1
eval $(docker-machine env zoo1)

docker pull jplock/zookeeper

docker run -p 2181:2181 -v `pwd`/conf:/opt/zookeeper/conf -v `pwd`/data:/tmp/zookeeper jplock/zookeeper

docker-machine ip zoo1 #############192.168.99.100

-

#--- CREATE CLUSTER ---

docker-machine create --driver virtualbox --swarm --swarm-master machine-smaster
docker-machine create --driver virtualbox --swarm machine-s01
docker-machine create --driver virtualbox --swarm machine-s02

-

eval "$(docker-machine env machine-smaster)"
docker run -p 2375:2375 -d -t swarm manage -H 0.0.0.0:2375 --advertise $(docker-machine ip machine-smaster):2375 zk://192.168.99.100:2181/swarm
docker run swarm list zk://192.168.99.100:2181/swarm

sleep 10

eval "$(docker-machine env machine-s01)"
docker run -d swarm join --advertise $(docker-machine ip machine-s01):2375 zk://192.168.99.100:2181/swarm
docker run swarm list zk://192.168.99.100:2181/swarm

eval "$(docker-machine env machine-s02)"
docker run -d swarm join --advertise $(docker-machine ip machine-s02):2375 zk://192.168.99.100:2181/swarm
docker run swarm list zk://192.168.99.100:2181/swarm

いくつかのコンテナーを実行する場合:

eval "$(docker-machine env machine-smaster)"
docker run hello-world

作業はノードにディスパッチされません (マスターによって実行されます)。docker info を実行すると:

eval "$(docker-machine env machine-smaster)"
docker info

swarm ノードが表示されません。

4

2 に答える 2

0

Swarm API ではなく、Docker APIを介して「Swarm マスター」マシンに接続しているようです。このため、Docker は常に接続先のホストにコンテナーをデプロイし、適切なホストでコンテナーをスケジュールする Swarm を利用しません。

Swarm API に接続するには--swarm、実行時にオプションを追加しますdocker-machine env。この場合、次のようになります。

eval "$(docker-machine env --swarm machine-smaster)"
于 2016-04-11T23:23:11.350 に答える
0

アドバタイズしているアドレスが実際にマネージャー インスタンスから到達可能であることを確認できますか? つまり、docker -H $(docker-machine ip machine-s01):2375 info有効な結果を返しますか?

(このサブシェルは、元のクライアントでのみ、マネージャー VM 内では機能しないことに注意してください。)

おそらく問題は、開始された Docker Machine インスタンスが TLS でリッスンし:2376 いるのに、開始された Swarm コンテナがTLS 設定を指定:2375 せずにアドバタイズして接続しようとしているということでしょうか?

docker logsSwarm コンテナの は何と言っていますか?

于 2016-04-12T19:01:40.670 に答える