You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker与Docker Compose命令差异:run、start、up对比解析

Docker 新手必懂:四大命令核心区别拆解

作为刚接触Docker的新手,这几个命令确实容易搞混,我来给你逐个掰扯清楚,结合实际场景讲明白什么时候用哪个:

1. docker run 'an image'

这是Docker原生的单容器启动命令,完全和Docker Compose没关系。

  • 作用:直接从指定镜像创建并启动一个全新的容器,是最基础的“跑个容器”操作。
  • 场景:比如你想快速测试某个镜像(比如docker run nginx跑个临时Nginx)、不需要多服务配合的简单场景。
  • 特点:只处理单个容器,没有服务依赖管理,所有参数都得在命令行里加(比如端口映射-p 80:80)。

2. docker-compose run 'service-name'

这是Docker Compose里的临时任务命令,不是用来启动常规服务的。

  • 作用:基于docker-compose.yml里定义的某个服务配置,创建一个临时容器来执行一次性任务。
  • 场景:比如你想进入web服务的容器调试(docker-compose run web bash)、跑个一次性的数据库迁移脚本,而不是启动常规的web服务进程。
  • 特点:默认不会启动该服务依赖的其他容器(比如web依赖db,run的时候不会自动启动db);任务完成后容器会停止,不会被纳入Compose的常规服务管理(用docker-compose ps可能看不到它,除非加参数)。

3. docker-compose start 'service-name'

先纠正个小误区:这个命令的参数是服务名,不是docker-compose.yml文件哦。

  • 作用:启动已经存在但处于停止状态的服务容器,不会重新创建容器,也不会读取最新的配置文件。
  • 场景:比如你之前用docker-compose up启动了服务,后来用docker-compose stop停了,现在想快速恢复运行,就用start。
  • 特点:速度快,因为只是启动现有容器,不做任何重建操作;如果你的docker-compose.yml后来改了,start不会应用这些修改,得用up才行。

4. docker-compose up 'service-name'

这是Docker Compose最常用的服务启动/重建命令,参数可以是服务名(只启动指定服务),也可以不写(启动所有服务)。

  • 作用:根据docker-compose.yml的配置,创建并启动服务容器:如果容器不存在,会拉取镜像、创建容器;如果容器已存在但配置有变化(比如镜像更新了、端口改了),会先销毁旧容器再创建新的;还会自动处理服务之间的依赖(比如先启动db再启动web)。
  • 场景:日常启动多服务项目(比如前端+后端+数据库的整套环境)、修改配置后重新部署服务。
  • 特点:默认会把所有服务的日志输出到控制台(加-d参数可以后台运行);是Compose管理服务生命周期的核心命令。

一句话总结场景

  • 单容器快速测试 → docker run
  • 临时执行服务相关任务 → docker-compose run
  • 恢复已停止的服务 → docker-compose start
  • 启动/重建整套服务环境 → docker-compose up

内容的提问来源于stack exchange,提问作者Benyamin Jafari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:22:09