来自 bash 脚本的 运行 docker 命令有不同的结果
running docker commands from a bash script has different results
我使用 socketplane/openvswitch docker 图片。
当我按照他们的说明在 运行 容器中构建和执行 OVS 命令时,一切正常。但是,当我尝试为 运行 构建 bash 脚本并执行 OVS 命令时,容器 returns 和
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
个容器时得到这个 - 启动需要几秒钟,所以我得到 'permission denied' 个错误。
尝试在其中插入 'sleep',作为一个简单的测试,但如果这是问题所在 - 您需要检查数据库启动并查看 'got to' 的位置。
否则,您可以使用 docker exec -it <container> bash
和 运行 命令以交互方式 "attach" 到您的容器并直接进行故障排除。
我使用 socketplane/openvswitch docker 图片。 当我按照他们的说明在 运行 容器中构建和执行 OVS 命令时,一切正常。但是,当我尝试为 运行 构建 bash 脚本并执行 OVS 命令时,容器 returns 和
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
个容器时得到这个 - 启动需要几秒钟,所以我得到 'permission denied' 个错误。
尝试在其中插入 'sleep',作为一个简单的测试,但如果这是问题所在 - 您需要检查数据库启动并查看 'got to' 的位置。
否则,您可以使用 docker exec -it <container> bash
和 运行 命令以交互方式 "attach" 到您的容器并直接进行故障排除。