基于overlay的network运行有问题


在 n0 启动redis-m:

docker run --name redis-m --net ol fsword/redis




在 n1 执行下列命令出错:

docker run -it --net ol --link redis-m:redis-m -e constraint:node==n1 fsword/redis /bin/sh

docker: Error response from daemon: Unable to find a node that satisfies the following conditions 
[available container slots]
[--link=redis-m:redis-m]
[node==n1].
See 'docker run --help'.


发现如果将n1改为n0或者去掉link就可以正常运行,怀疑自己对overlay理解不正确
已邀请:

肖恩

赞同来自:

  1. 如果容器使用 overlay网络,那么相应的容器都在同一个局域网内,互相是可以通信的。所以不需要link 。
  2. 你加了 constraint:node==n1 想必 是 使用了 swarm 。那么你需要保证,
    docker client 使用的api 是swarm 的api,也就是 环境变量 DOCKER_HOST= swarm 地址, 或者 docker -H swarm 地址,
    swarm集群中管理的节点中, 你相应的 node0, node1 两个节点的 docker daemon的启动时,设置了相应的 label,这样,swarm才知道 node==n1 指的是那个节点。

fsword - 程序员,搞java出身,喜欢ruby on rails、erlang和js,专注web 不相信中医理论 反对美化拔高传统文化 接受自由主义经济学观点,关注云计算和比特币

赞同来自:


第二条我都是设置好的,启动docker daemon的时候确实也设定了 label
不使用link的时候我也试过,容器间不能访问,怀疑还是overlay没有起作用

刚发现 swarm manger 的log有错误信息:

Engine (ID: 5ZSU:NEZ7:SEC3:5FAM:6WOJ:ZNOK:7JFP:NOAC:VA2V:R7TK:FMAC:L6XC, Addr: 192.168.99.115:2376) containers a label (node=n1) with key of "node" which cannot be used in Swarm

这个是不是和我的问题有关?

fsword - 程序员,搞java出身,喜欢ruby on rails、erlang和js,专注web 不相信中医理论 反对美化拔高传统文化 接受自由主义经济学观点,关注云计算和比特币

赞同来自:


是我的低级错误,docker daemon里设定 cluster-advertise 的时候绑定到另一个网卡上了( docker-machine 驱动 virtualbox,缺省对外网卡不是 eth0 ,而是 eth1 )

要回复问题请先登录注册