docker群组合约束

docker群组合约束,docker,constraints,docker-swarm,Docker,Constraints,Docker Swarm,我有一个swarm manager和两个swarm节点,我想根据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 con

我有一个swarm manager和两个swarm节点,我想根据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].
下面是我在swarm上运行docker info时得到的信息

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

我错过了什么吗?

在swarm模式下,首先,你不运行容器本身。您运行的服务将运行容器。并且您的约束没有以正确的方式提供给服务创建。我认为学习正确方法的最好方法是通过docker服务create cli引用。

在swarm模式下,首先您不运行容器本身。您运行的服务将运行容器。并且您的约束没有以正确的方式提供给服务创建。我认为学习正确方法的最好方法是通过docker服务create cli引用。

感谢您的提示和链接,这是我想在其中使用docker的第一个项目。我不想在swarm manager上启动容器。我想在连接到swarm manager的两个节点上运行它们。但我不明白为什么这个命令不能满足约束条件?@user3756702要么使用swarm,要么不使用。将容器作为服务运行(来自管理器)将导致它们被自动安排在构成swarm的一个节点上。感谢您的提示和链接,这是我想使用docker的第一个项目。我不想在swarm manager上启动容器。我想在连接到swarm manager的两个节点上运行它们。但我不明白为什么这个命令不能满足约束条件?@user3756702要么使用swarm,要么不使用。将容器作为服务运行(从管理器)将导致它们被自动安排在构成swarm的一个节点上。您是使用swam模式还是swarm模式?如果你使用swarm-你确定你的swarm manager监听端口2376吗?尝试在端口4000上运行它(通常由swarm而不是本地代理使用)。看起来您试图在本地引擎上调度容器。希望这有帮助。我解决了这个问题。不知道为什么它不起作用。重新启动节点后,swarm可以正常工作,docker compose也可以与swarm完美配合。您是使用swam模式还是swarm模式?如果你使用swarm-你确定你的swarm manager监听端口2376吗?尝试在端口4000上运行它(通常由swarm而不是本地代理使用)。看起来您试图在本地引擎上调度容器。希望这有帮助。我解决了这个问题。不知道为什么它不起作用。重新启动节点后,swarm可以正常工作,docker compose也可以与swarm完美配合。