每当我执行
docker-compose start
docker-compose ps
我看到我的容器状态是“UP”。如果我进行docker-compose up -d
我会看到更冗长的输出,但状态不会有任何变化。这两个命令之间有什么区别吗?
每当我执行
docker-compose start
docker-compose ps
我看到我的容器状态是“UP”。如果我进行docker-compose up -d
我会看到更冗长的输出,但状态不会有任何变化。这两个命令之间有什么区别吗?
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/
up、run和start有什么区别?
通常,您会使用docker-compose up
。使用up
启动或重新启动在docker-compose.yml
中定义的所有服务。在默认的“附加”模式下,您可以看到所有容器的日志信息。在“分离”模式(-d
)下,Compose在启动容器后退出,但容器继续在后台运行。
docker-compose run
命令用于运行“一次性”或“临时”的任务。它需要您想要运行的服务名称,并仅为所运行的服务所依赖的服务启动容器。使用run
来运行测试或执行管理任务,例如从数据卷容器中删除或添加数据。run
命令的作用类似于docker run -ti
,因为它打开一个交互式终端,返回匹配容器内进程的退出状态。
docker-compose start
命令仅适用于重新启动先前创建但已停止的容器。它不会创建新的容器。
docker compose restart
可能具有类似于 docker restart
的行为。它会先停止容器,然后再启动容器。 - CyberPlayerOneup
、run
和 start
在 Docker Compose 中有什么区别?docker-compose up
:构建、(重新)创建和启动容器。它还会附加到服务的容器上。docker-compose run
:根据业务需求运行一次性或临时任务。在这里,必须提供服务名称,Docker 会仅启动该特定服务以及目标服务所依赖的其他服务(如果有)。它对于测试容器和执行任务非常有帮助。docker-compose start
:启动停止的容器,但无法创建新容器。