docker-compose up 和 docker-compose start 有什么区别?

191

每当我执行

docker-compose start 
docker-compose ps
我看到我的容器状态是“UP”。如果我进行
docker-compose up -d

我会看到更冗长的输出,但状态不会有任何变化。这两个命令之间有什么区别吗?


https://docs.docker.com/compose/faq/#whats-the-difference-between-up-run-and-start - j08691
3个回答

210

docker-compose start
(https://docs.docker.com/compose/reference/start/)

启动服务的现有容器。

docker-compose up
(https://docs.docker.com/compose/reference/up/)

为一个服务创建、重新创建、启动并且建立依赖链,同时附着到容器上。

如果当前容器未运行,则该命令还会启动任何已链接的服务。

docker-compose up 命令聚合每个容器的输出 (基本等同于执行 docker-compose logs -f)。当命令退出时, 所有容器都会停止。使用 docker-compose up -d 以后台方式启动容器并让它们保持运行状态。

如果存在一个服务的现有容器,并且在容器创建后更改了服务的配置或镜像, docker-compose up 将通过停止和重新创建容器(保留挂载卷)来更新这些更改。 若要防止 Compose 捕获更改,请使用 --no-recreate 标志。

完整的CLI命令参考文档:
https://docs.docker.com/compose/reference/


4
更新的Docker Compose CLI参考链接为:https://docs.docker.com/compose/reference/
  • docker-compose up: https://docs.docker.com/compose/reference/up/
  • docker-compose start: https://docs.docker.com/compose/reference/start/
- michael

46
在Docker的常见问题解答中,这一点被解释得非常清楚:
引用:

up、run和start有什么区别?

通常,您会使用docker-compose up。使用up启动或重新启动在docker-compose.yml中定义的所有服务。在默认的“附加”模式下,您可以看到所有容器的日志信息。在“分离”模式(-d)下,Compose在启动容器后退出,但容器继续在后台运行。

docker-compose run命令用于运行“一次性”或“临时”的任务。它需要您想要运行的服务名称,并仅为所运行的服务所依赖的服务启动容器。使用run来运行测试或执行管理任务,例如从数据卷容器中删除或添加数据。run命令的作用类似于docker run -ti,因为它打开一个交互式终端,返回匹配容器内进程的退出状态。

docker-compose start命令仅适用于重新启动先前创建但已停止的容器。它不会创建新的容器。


3
重启命令(how restart command)与运行、启动和开启等命令(run, start, up)有何不同? - Nag
@Nag docker compose restart 可能具有类似于 docker restart 的行为。它会先停止容器,然后再启动容器。 - CyberPlayerOne

8

uprunstart 在 Docker Compose 中有什么区别?

  • docker-compose up:构建、(重新)创建和启动容器。它还会附加到服务的容器上。
  • docker-compose run:根据业务需求运行一次性或临时任务。在这里,必须提供服务名称,Docker 会仅启动该特定服务以及目标服务所依赖的其他服务(如果有)。它对于测试容器和执行任务非常有帮助。
  • docker-compose start:启动停止的容器,但无法创建新容器

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接