2016-08-16 30 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或不使用。将容器作为服务运行(从管理器运行)将导致它们在组成群集的节点之一自动进行调度。 –