swarm管理器不会连接到AWS上的节点的docker守护进程

时间:2016-10-29 16:40:12

标签: amazon-web-services amazon-ec2 docker-swarm

我正在尝试在AWS上配置docker swarm示例。

我有三台机器:两个节点和管理器,使用docker-machine创建:

docker-machine create --driver amazonec2 --amazonec2-region eu-central-1 swarm-manager
docker-machine create --driver amazonec2 --amazonec2-region eu-central-1 docker1
docker-machine create --driver amazonec2 --amazonec2-region eu-central-1 docker2

我设置docker1和2就像这样:

设置/ etc / default / docker:

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

重新启动docker然后:

sudo docker run -d swarm join --addr=172.31.5.27:2375 token://<token>

并检查了它:

ubuntu@docker1:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
a4ae06e827a6        swarm               "/swarm join --addr=1"   28 minutes ago      Up 28 minutes       2375/tcp            admiring_blackwell

在群集机器上:

sudo docker run -dP swarm manage token://

我添加了我的节点:

ubuntu@swarm-manager:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
67f55fda2eba        swarm               "/swarm manage token:"   16 minutes ago      Up 16 minutes       0.0.0.0:32768->2375/tcp   trusting_dijkstra

ubuntu@swarm-manager:~$ docker -H tcp://127.0.0.1:32768 info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: swarm/1.2.5
Role: primary
Strategy: spread
Filters: health, port, containerslots, dependency, affinity, constraint
Nodes: 2
 (unknown): 172.31.11.143:2375
  └ ID:
  └ Status: Pending
  └ Containers: 0
  └ Reserved CPUs: 0 / 0
  └ Reserved Memory: 0 B / 0 B
  └ Labels:
  └ Error: Cannot connect to the Docker daemon. Is the docker daemon running on this host?
  └ UpdatedAt: 2016-10-29T16:34:28Z
  └ ServerVersion:
 (unknown): 172.31.5.27:2375
  └ ID:
  └ Status: Pending
  └ Containers: 0
  └ Reserved CPUs: 0 / 0
  └ Reserved Memory: 0 B / 0 B
  └ Labels:
  └ Error: Cannot connect to the Docker daemon. Is the docker daemon running on this host?
  └ UpdatedAt: 2016-10-29T16:34:38Z
  └ ServerVersion:
Plugins:
 Volume:
 Network:
Swarm:
 NodeID:
 Is Manager: false
 Node Address:
Security Options:
Kernel Version: 4.2.0-18-generic
Operating System: linux
Architecture: amd64
CPUs: 0
Total Memory: 0 B
Name: 67f55fda2eba
Docker Root Dir:
Debug Mode (client): false
Debug Mode (server): false
WARNING: No kernel memory limit support

我无法解释为什么imy节点仍处于未决状态。我使用的私有IP似乎是正确的,加上两个节点是listes。任何提示?

3 个答案:

答案 0 :(得分:0)

这可能与this issue有关。我的理解是使用Docker 1.12.1创建的docker机器存在问题。我得到的错误是

Error checking TLS connection: "mybox" is not a swarm master. The --swarm flag is intended for use with swarm masters

运行后

eval $(docker-machine env --swarm mybox)

你可能会通过略有不同的路线到达同样的问题,但我遇到了相同的群体问题。

答案 1 :(得分:0)

您需要使用docker-machine ssh aws-swarm-mgr登录群组管理器,然后启动 首先在主节点上docker-swarm init

然后使用登录到从属节点 docker-machine ssh docker1

请注意在此加入主人的令牌,示例输出

docker swarm join --token SWMTKN-1-65v85za1nnkg4u09e1jbgtk86b3pl8ntawj0ha6m6upzbyho5z-4fasp7wt5f13ts16arypbrpa1 192.168.99.100:2377

从docker1节点和docker2节点

运行
docker swarm join --token xxxLOREMIPSUMTOKENx ip:2377

要确认以上内容,请登录主节点

docker-machine ssh aws-swarm-mgr

从内部,主aws节点

aws-swarm-mgr> docker node ls

应该这样做。

答案 2 :(得分:0)

我在AWS上有一个带有三个节点的docker群。我应该通过任何三个公共IP地址查看我的网页。我已经打开了docker doc上所述的必需安全组。我认为他们的叠加层驱动程序有此错误...