是否有理由使用 run
来启动 docker-compose.yml
文件,还是应该只使用 up
?
我知道 run
可以启动特定的容器,但我指的是您使用它而不指定容器的情况,以便它启动所有 yml 容器。
原文由 Raif 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否有理由使用 run
来启动 docker-compose.yml
文件,还是应该只使用 up
?
我知道 run
可以启动特定的容器,但我指的是您使用它而不指定容器的情况,以便它启动所有 yml 容器。
原文由 Raif 发布,翻译遵循 CC BY-SA 4.0 许可协议
docker docs 有一个答案。
通常,您需要
docker-compose up
。使用up
启动或重新启动在docker-compose.yml
中定义的所有服务。在默认的“附加”模式下,您会看到来自所有容器的所有日志。在“分离”模式下(-d
),Compose 启动容器后退出,但容器继续在后台运行。
docker-compose run
命令用于运行“一次性”或“临时”任务。它需要您要运行的服务名称,并且只为正在运行的服务所依赖的服务启动容器。使用run
运行测试或执行管理任务,例如将数据删除或添加到数据卷容器。run
命令的作用与docker run -ti
类似,它打开一个到容器的交互式终端并返回与容器中进程的退出状态相匹配的退出状态。原文由 Jay 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答2.4k 阅读✓ 已解决
2 回答800 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答1.4k 阅读
1 回答1.6k 阅读
2 回答1.2k 阅读
1 回答967 阅读
如
docker-compose run
(2015)中所述因此,除非您有这些特定需求(覆盖命令或仅在不同端口上运行一个容器),
docker-compose up
(即使对于一个容器)就足够了。如 questionto42 的评论 中所述,您这样做是为了测试:
仅仅因为
docker-compose run
用于为您的服务运行一次性命令。这意味着,如果您已经执行了
docker-compose up
,那么您的所有容器都已经在docker-compose.yml
的指定端口上运行。在这个阶段(执行一次性命令)执行
docker-compose run
,如果它尊重同一个端口,将立即失败。因此默认不创建这些端口。另一个用例(在 Compose 环境变量参考中):
这些命令的最新(2019+)版本在
docker/docker.github.io
上:docker compose run
docker compose up