“解决IP失败”; joindockerized serf代理时,bash脚本中的“查找错误”

[上下文:主机是Docker版本17.05.0-ce的AWS-EC2 / Ubuntu 14.04.5。 容器是从公开可用的回购图像cbhihe /农奴阿尔卑斯山打造。 容器位于相同的EC2实例上,并共享相同的默认桥接networking以及实例的eth0接口。]

这个问题build立在对另一个问题的回答上。

使用两个正在运行的docker容器,每个容器都有一个活的serf代理,我想从一个无人值守的bash脚本中构build一个两节点的serf集群,在两个容器运行的主机上执行。

对于容器“DC2”中的一个农奴代理join具有私有IP 172.17.0.2的容器“DC1”中的另一个代理,我的脚本如下所示:

 docker run -d --name DC1 --rm cbhihe/serf-alpine-bash agent -node=NODE1 -iface=eth0 docker run -d --name DC2 --rm cbhihe/serf-alpine-bash agent -node=NODE2 -iface=eth0 docker exec -d DC2 serf join 172.17.0.2 

两条第一行产生预期结果,即2个正在运行的容器。 第三行似乎失败了:

  • 无声地,当使用分离开关时,
  • 或者在没有这种开关的情况下出现以下错误。

    join群集时出错:出现1个错误:无法parsing172.17.0.2:lookup 172.17.0.2:无效的域名

无论哪种方式join不会发生。
从控制台执行完全相同的操作完美无瑕。

我看着在我的脚本的bash shebang上下文中导入主机的环境。 不成功。 指针是受欢迎的。 TX

从你的问题的信息,我认为可能有一个依赖于shell,设置环境variables。

尝试执行由bash启动的农奴。 像这样的东西:

 docker exec "$cont_id" bash -c 'serf join '"$join_IP" 
Interesting Posts