1

I am new in Docker, and I was wondering a question today. I know there are spread and binpack strategies which are intends to balance the "work load". But is there any way to provision the containers like the following topology by using Docker, Swarm?

enter image description here

Or should I customize the scheduler? Or is there any suitable cluster management tool? And is there any suggestion?

4

1 に答える 1

3

更新: この回答はレガシー docker/swarm に適用され、docker 1.12 以降に利用可能な新しいSwarm モードには適用されません。

labelsこれらのラック/マシンで docker デーモンを開始するときに、Swarm を使用してこれを実現できます。

ラベルを使用して Docker デーモンをセットアップする

このトポロジがあると仮定します。

rack1
  |___ node1

rack2
  |___ node2
  |___ node3

これを反映するカスタム ラベルを使用して docker デーモンをセットアップできます。

ラック 1 のノード 1

docker --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H tcp://0.0.0.0:2376 -d --label rack=rack1 --label machine=node1`

ラック 2 のノード 2

docker --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H tcp://0.0.0.0:2376 -d --label rack=rack2 --label machine=node2

ラック 2 のノード 3

docker --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H tcp://0.0.0.0:2376 -d --label rack=rack2 --label machine=node3

制約の使用

Swarm を使用すると、制約を使用してコンテナーの場所を選択できます。この例では、ラック 1のノードのサブセットのみを使用してコンテナをスケジュールします。

docker run -d -P -e constraint:rack==rack1 --name web nginx

ラックごとに複数のノードがある場合 (rack2たとえば)、制約をチェーンすることもできます。次の例では、 にnode3配置されているコンテナを固定しrack2ます。

docker run -d -P -e constraint:rack==rack2 -e constraint:node==node3 --name web nginx
于 2015-08-18T19:23:21.150 に答える