试用docker 1.12 swarmkit遇到的问题


用docker service create 创建的服务里.

docker service ls

ID            NAME  REPLICAS  IMAGE   COMMAND
c4xubqfahzid  demo  2/2       alpine  ping docker.com

docker service tasks demo

ID                         NAME    SERVICE  IMAGE   LAST STATE         DESIRED STATE  NODE
9878bo6xyx0459qw9lfydwptv  demo.1  demo     alpine  Running 8 minutes  Running        centos-node5
9u1p24ccj9lbyjilnih2b40s9  demo.2  demo     alpine  Running 7 minutes  Running        centos-node4

docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
fc3cbcb4d5c8        alpine:latest       "ping docker.com"   7 minutes ago       Up 7 minutes                            demo.2.9u1p24ccj9lbyjilnih2b40s9


发现实际上的容器名是用的taskname.${number}.taskid拼接的

然后容器无论用什么原因停了(host重启也会), 会启动一个新的容器, 容器id会改变, 原来的容器还是存在的
这一组service服务里如果用的是同一个网络的话, 是可以互相联通的.

  1. 这就有个问题了, 那如果其中一个容器停止了, 新的taskid 又不知道, 在容器里怎么去连接新启动的那一个?

    如果把create 的参数--restart-condition 设置成none的话, 重启一个容器后, docker service tasks 看到的状态不会更新了, 一直是Shutdown状态

  2. 另一个问题就是这样是不是只能和数据卷了? 服务器启动时, 如果多节点虽然可以用filter过滤, 但出现两个容器跑一个机器去时数据卷怎么同步的?


0802: 更新

  1. 我试了下, 发现是manager的ip可以自动识别里边的服务,自动负载均衡。 但防火墙规则加了外边也访问不了, 不知道为什么。

    用create 服务时用-p 指定端口, 但没测试是不是必需的

  2. 还有就是用scale扩容后,过一会,服务就访问不了的, 但容器状态是正常的, 容器里边也是能访问的


(http://ystyle.top/2016/07/02/s ... ji-qun)
已邀请:

水柒

赞同来自:


请教个问题
使用 1.12版本 docker 自带的swarm 组建的集群 创建的service 生产的容器如果在 别的节点,要怎么查看容器信息, docker ps 只能看到本节点的容器

要回复问题请先登录注册