如何在与Swarm管理器相同的机器上运行Docker Swarm节点?

7
我一直按照这些说明在我的Ubuntu机器上设置docker集群。我想在同一台运行swarm manager的机器上运行一些swarm节点,但是节点的状态为“Pending”,并显示错误“无法连接到docker引擎端点”。
以下是我运行的设置系统的命令:
docker run -d --name consul -p 8500:8500 progrium/consul -server -bootstrap
docker run --name manager -d -p 4000:4000 swarm manage -H :4000 --advertise 192.168.1.18:4000  consul://192.168.1.18:8500
docker run -d -p 6300:2375 swarm join --advertise=192.168.1.18:6300 consul://192.168.1.18:8500

我注意到的一件事是节点没有绑定端口:

$ nmap localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2016-03-02 15:06 EST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00054s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 996 closed ports
PORT     STATE SERVICE
4000/tcp open  remoteanything
8500/tcp open  fmtp

以下是来自 Docker info 的输出结果:
$ docker -H :4000 info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: swarm/1.1.2
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 1
 (unknown): 192.168.1.18:6300
   Status: Pending
   Containers: 0
   Reserved CPUs: 0 / 0
   Reserved Memory: 0 B / 0 B
   Labels:
   Error: Cannot connect to the docker engine endpoint
   UpdatedAt: 2016-03-02T18:44:38Z
Plugins:
 Volume:
 Network:
Kernel Version: 4.2.0-30-generic
Operating System: linux
Architecture: amd64
CPUs: 0
Total Memory: 0 B
Name: 739dc6a5c721

任何帮助都将不胜感激!

我尝试过,但是我也无法弄清楚。我相信这是可能的(尽管我找不到任何相关文档)。我的猜测是,在某些情况下,它还取决于所需的k/v后端存储(用于多主机网络)。我也没有深入挖掘(不超过半天)。 - Auzias
1个回答

4

看起来在按照这些说明之后,事情正在正常工作。简而言之,在主机上,您应该编辑/etc/default/docker文件并添加以下行:

DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"

您需要重新启动Docker:

sudo restart docker

我遇到了这个问题,因为安装程序自动启动了Docker引擎(至少在Ubuntu上是这样的)。这会导致指令3.3(sudo docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock)失败,因为它已经在运行中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接