2016-08-16 15 views
1

私は1つのswarm managerと2つのswarm nodeを持っています。私は、docker deamonで定義したいくつかのラベルに基づいてコンテナを開始したいと思います。これは私が試したコマンドです:docker swarm compose constraints

docker -H :2376 run -e constraint:node==docker2 image/restservice 
docker: Error response from daemon: Unable to find a node that satisfies the following conditions 
[available container slots] 
[node==docker2]. 

ここで私はswarmとドッカーの情報を実行すると何が得られますか?

Containers: 13 
Running: 4 
Paused: 0 
Stopped: 9 
Images: 54 
Server Version: swarm/1.2.3 
Role: primary 
Strategy: spread 
Filters: health, port, containerslots, dependency, affinity, constraint 
Nodes: 2 
docker-node-1: 192.168.56.104:2375 
    └ ID: I32N:D2XQ:I2FL:WDDR:YQ32:BJ62:XRWJ:7TDR:XD74:IH5M:Y2W2:4PD6 
    └ Status: Healthy 
    └ Containers: 7 
    └ Reserved CPUs: 0/1 
    └ Reserved Memory: 0 B/2.061 GiB 
    └ Labels: executiondriver=, kernelversion=3.16.0-4-amd64, node=docker2, operatingsystem=Debian GNU/Linux 8 (jessie), storagedriver=aufs 
    └ UpdatedAt: 2016-08-16T18:47:05Z 
    └ ServerVersion: 1.11.1 
docker-node-2: 192.168.56.106:2375 
    └ ID: 6VAY:KCMX:JTTG:SQXW:BFMK:MPNJ:AWEL:F3LT:FCXI:SQRO:ORDK:MOHY 
    └ Status: Healthy 
    └ Containers: 6 
    └ Reserved CPUs: 0/1 
    └ Reserved Memory: 0 B/2.061 GiB 
    └ Labels: executiondriver=, kernelversion=3.16.0-4-amd64, node=docker3, operatingsystem=Debian GNU/Linux 8 (jessie), storagedriver=aufs 
    └ UpdatedAt: 2016-08-16T18:47:19Z 
    └ ServerVersion: 1.11.1 
Plugins: 
Volume: 
Network: 
Kernel Version: 3.16.0-4-amd64 
Operating System: linux 
Architecture: amd64 
CPUs: 2 
Total Memory: 4.123 GiB 
Name: bdf49c666300 
Docker Root Dir: 
Debug mode (client): false 
Debug mode (server): false 
WARNING: No kernel memory limit support 

私は見逃しましたか?

+0

掃除モードを使用していますか? swarmを使用している場合は、swarm managerがポート2376でリッスンしていますか? ポート4000(これは通常、ローカルエージェントではなくswarmによって使用されます)で実行してみてください。 ローカルエンジンでコンテナのスケジュールを設定しようとしているようです。 これが役に立ちます。 –

+0

私はこの問題を解決しました。なぜそれがうまくいかなかったのか分かりません。ノード群を再起動しても何の問題もなく動作します。また、ドッカーの作図は群れで完璧に機能します。 – user3756702

答えて

0

まず、スターンモードでは、コンテナ自体を実行しません。コンテナを実行するサービスを実行します。そしてあなたの制約は正しい方法でサービス創造に与えられません。私はそれを行う適切な方法を学ぶための最良の方法は、ドッキングサービスを介してcliの参照を作成することだと思う。 https://docs.docker.com/engine/reference/commandline/service_create/

+0

あなたのヒントとリンクをありがとう、私はドッカーを使用したいと思う最初のプロジェクトです。私は群長マネージャーでコンテナを開始したくありません。私は群長マネージャーに接続した2つのノードでそれらを実行したい。しかし、私はこのコマンドが制約を守っていない理由を理解していませんか? – user3756702

+1

@ user3756702かごを使用するか使用しないでください。コンテナをサービスとして(マネージャから)実行すると、swarmを自動的に構成するノードの1つでスケジュールされます。 –