docker - 如何在 docker 容器中并行运行多个命令,然后等待它们全部完成?
问题描述
在没有 docker 的普通 bash 中
sleep 30 &
sleep 20 &
sleep 10 &
wait
我想在一些 docker 容器中执行此操作
docker exec -d container1 "sleep 30"
docker exec -d container2 "sleep 20"
docker exec -d container3 "sleep 10"
wait
但是,等待立即终止。我知道可以使用 ps -ef 来获取正在运行的进程的 pid,并创建一个轮询循环来检查它们何时以 kill 终止,但这感觉非常复杂且不必要。
Docker wait 在我的情况下不起作用,因为容器在运行这些命令后不会停止。
解决方案
如果我启动一些容器:
docker run -d --name container1 fedora34 sleep inf
docker run -d --name container2 fedora34 sleep inf
docker run -d --name container3 fedora34 sleep inf
这对我来说很好:
docker exec container1 sleep 30 &
docker exec container2 sleep 20 &
docker exec container3 sleep 10 &
wait
你可以在这里看到我的完整测试。
推荐阅读
- blazor - Blazor Webassembly 中的父组件未更新
- git - git命令获取特定目录下的所有文件并进行hash
- python - 如何创建一个表单来查询模型中的对象并在新页面中显示查询结果?
- css - flexbox/grid css的最大行数
- javascript - Firebase 错误:(app/invalid-app-argument)在本机反应
- spring - Docker容器端口无法访问Spring Boot App
- javascript - 谷歌街景被 CORS 屏蔽
- python - pd.DataFrame(res['result'][pair]) 上的 PyKrakenAPI KeyError
- c# - 使用来自 datagridview 的信息以另一种形式更新计时器标签
- amazon-web-services - 是否可以使用路由 53 将同一链接的 http 重定向到 https?