&引用;未能解决IP问题&引用;查找错误“;加入停靠的serf代理时在bash脚本中

&引用;未能解决IP问题&引用;查找错误“;加入停靠的serf代理时在bash脚本中,bash,docker,ip-address,lookup,Bash,Docker,Ip Address,Lookup,[上下文:主机为AWS-EC2/Ubuntu14.04.5,Docker版本为17.05.0-ce。容器由公开可用的repo映像cbhihe/serf alpine bash构建。容器位于同一EC2实例上,共享同一默认网桥网络以及实例的eth0接口。] 这个问题建立在一个不同问题的基础上 使用两个运行的docker容器,每个容器中都有一个活动的serf代理,我想从无人参与的bash脚本形成一个两节点的serf集群,在两个容器运行的主机上执行 对于容器“DC2”中的一个serf代理加入到私有IP为

[上下文:主机为AWS-EC2/Ubuntu14.04.5,Docker版本为17.05.0-ce。容器由公开可用的repo映像cbhihe/serf alpine bash构建。容器位于同一EC2实例上,共享同一默认网桥网络以及实例的eth0接口。]

这个问题建立在一个不同问题的基础上

使用两个运行的
docker
容器,每个容器中都有一个活动的
serf
代理,我想从无人参与的bash脚本形成一个两节点的serf集群,在两个容器运行的主机上执行

对于容器“DC2”中的一个serf代理加入到私有IP为172.17.0.2的容器“DC1”中的另一个serf代理,我的脚本如下所示:

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个运行容器。第三行似乎失败了:

  • 或者在使用分离开关时,以静默方式
  • 或在没有此类开关的情况下出现以下错误

    加入群集时出错:发生1个错误: 无法解析172.17.0.2:查找172.17.0.2:无效域名

任何一种方式都不会发生连接
从控制台执行完全相同的操作是完美的


我考虑在脚本的bash-shebang上下文中导入主机环境。没有成功。欢迎指点。Tx

根据您问题中的信息,我认为可能存在对shell的依赖性,它设置了环境变量

尝试执行bash启动的serf。大概是这样的:

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

也许是对外壳的依赖?试试
docker exec DC2 bash-c'serf join 172.17.0.2'
@Robert,它在我的用例中工作得很好:
docker exec“$cont_id”bash-c'serf join'”$join_IP”
你能给它一个答案吗,也许可以补充一下
bash-c
环境细节的简短解释,以供未来读者阅读?再次感谢你。