每当我执行
docker-compose start
docker-compose ps
我看到状态为“UP”的容器。如果我做
docker-compose up -d
我会看到更详细但它会有相同的状态。两个命令之间有什么区别吗?
答案 0 :(得分:131)
docker-compose start
启动服务的现有容器。
docker-compose up
构建,(重新)创建,启动和附加服务的容器。
将启动链接服务,除非它们已在运行。
默认情况下,docker-compose up将聚合每个容器的输出,当它退出时,所有容器都将被停止。运行docker-compose up -d,将在后台启动容器并让它们继续运行。
默认情况下,如果服务存在现有容器,则docker-compose up将停止并重新创建它们(保留带卷的挂载卷),以便拾取docker-compose.yml中的更改。如果您不希望停止并重新创建容器,请使用docker-compose up --no-recreate。如果需要,这仍将启动任何已停止的容器。
来源:https://docs.docker.com/v1.5/compose/cli/
我希望它有所帮助
答案 1 :(得分:1)
在docker Frequently asked questions 中,对此的解释非常清楚:
启动,运行和启动有什么区别?
通常,您需要
docker-compose
up
。用尽启动或重新启动docker-compose.yml
中定义的所有服务。在默认情况下 在“附加”模式下,您将看到来自所有容器的所有日志。在 “分离”模式(-d),启动容器后退出Compose,但是 容器继续在后台运行。docker-compose run命令用于运行“一次性”或“临时” 任务。它需要您要运行的服务名称,并且只会启动 运行服务所依赖的服务的容器。使用运行 运行测试或执行管理任务,例如删除或 将数据添加到数据卷容器。运行命令的行为类似于 docker run -ti,因为它打开了一个到 容器并返回与出口状态匹配的出口状态 在容器中处理。
docker-compose start命令仅对重启容器有用 先前创建的,但已停止。它永远不会创造新的 容器。