我使用socketplane/openvswitch泊坞窗图片。 当我按照他们的指示在正在运行的容器中构建和执行OVS命令时,一切正常。但是,当我尝试构建用于运行和执行OVS命令的bash脚本时,容器将返回
db.sock: Database connection failed (Connection refused)
实际上问题是在终端中运行以下命令:
docker run -itd --cap-add NET_ADMIN [container-name]
docker exec $cid ovs-vsctl show
成功,但在bash脚本中运行相同的命令却没有。
这是我的bash脚本:
#!/bin/bash
cid=$(docker run -itd --cap-add NET_ADMIN [container-name])
docker exec $cid ovs-vsctl show
由于
答案 0 :(得分:0)
我的想法是问题的根源在于:
docker run -itd
因为它们是相互矛盾的参数。
-d
说'在后台跑。 -it
说'以交互方式运行,附上一个tty。 所以我建议你试试:
#!/bin/bash
cid=$(docker run -d --cap-add NET_ADMIN [container-name])
docker exec $cid ovs-vsctl show
如果做不到这一点,我的第二个猜测就是 - 容器的启动过程需要一段时间。我在启动kibana
个容器时得到了这个 - 它需要几秒钟才能启动,所以我得到'许可被拒绝'的错误。
尝试在那里坚持'睡眠',作为一个简单的测试,但如果这是问题 - 你需要检查数据库启动,看看你到了哪里'。
如果失败,您可以使用docker exec -it <container> bash
以交互方式“附加”到容器中并运行命令并直接进行故障排除。