从bash脚本运行docker命令有不同的结果
问题描述:
我使用socketplane/openvswitch泊坞窗图像。 当我按照他们的指示在正在运行的容器中构建和执行OVS命令时,一切正常。但是,当我尝试建立一个bash脚本运行和执行OVS命令与
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
感谢
答
我的想法是你的问题的根源就在这里:
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
并运行命令,并直接排除故障。
如果没有更多的细节,我们无法回答。至少要参考您所遵循的导致问题的指示。以及你正在运行那个错误的一系列命令。 – Sobrique
[问]对于提出一个好问题是一个有用的参考点。想象一下,我试图在我的系统上重现您的错误。我需要做什么? – Sobrique
对不起,修改了 – Daniel