2016-08-16 65 views
1

我有一個羣集管理器和兩個羣集節點,我想根據我在docker deamon上定義的一些標籤啓動一個容器。這是我試過的命令:碼頭羣組合約束條件

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]. 

這裏是我得到的,如果我運行與羣衆碼頭信息。

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端口上運行(通常由羣集使用而不是本地代理)。 它看起來像你試圖在本地引擎上安排容器。 希望這會有所幫助。 –

+0

我解決了這個問題。不知道爲什麼它不起作用。重新啓動節點羣后工作沒有任何問題,也是碼頭工作人員與羣體完美合作。 – user3756702

回答

0

在swarm模式下,首先你不會運行容器本身。您運行將運行容器的服務。而且你的約束沒有以正確的方式給予服務創造。我認爲學習正確方法的最好方法是通過docker服務創建cli參考。 https://docs.docker.com/engine/reference/commandline/service_create/

+0

感謝您的提示和鏈接,這是我想使用docker的第一個項目。我不想在swarm manager上啓動容器。我想在連接到swarm管理器的兩個節點上運行它們。但我不明白爲什麼這個命令不能確定約束條件? – user3756702

+1

@ user3756702使用swarm或不使用。將容器作爲服務運行(從管理器運行)將導致它們在組成羣集的節點之一自動進行調度。 –