docker start 是 Docker 中一个非常基础且常用的命令,用于启动一个或多个已经停止的容器。

(图片来源网络,侵删)
基本语法
docker start [OPTIONS] CONTAINER [CONTAINER...]
[OPTIONS]:命令的可选参数。CONTAINER:要启动的容器,你可以指定一个或多个容器 ID 或容器名称。[CONTAINER...]:表示可以传入多个容器,用空格隔开。
常用参数 (OPTIONS)
docker start 命令本身的参数并不多,核心功能是启动容器,以下是主要的可选参数:
-a, --attach
- 作用:启动容器后,立即附加到容器的标准输入、输出和错误流上。
- 场景:当你启动一个容器,并且希望立即看到它的实时输出日志时,这个参数非常有用,这相当于
docker start和docker attach的组合。 - 注意:如果你按
Ctrl+C退出附加模式,容器不会停止,它会继续在后台运行。
示例:
# 启动一个名为 my-web-server 的容器,并附加到它的终端上 docker start -a my-web-server
-i, --interactive
- 作用:以交互模式运行容器,并保持标准输入(STDIN)打开。
- 场景:这个参数通常与
-a或-d结合使用,但更常见的是与docker run的-it组合,单独使用docker start -i会附加到容器的stdin,让你可以像在交互式 shell 中一样向容器输入命令。 - 注意:如果容器启动后没有运行一个持续监听
stdin的程序(比如一个 shell),你按Ctrl+C退出时,容器可能会停止。
示例:
# 启动一个容器,并附加到它的标准输入,允许你输入命令 docker start -i my-interactive-container
--checkpoint
- 作用:从指定的检查点恢复容器。
- 场景:这是一个高级功能,用于实验性功能 Container Checkpoints,它允许你“暂停”一个容器(包括其内存状态)到一个文件中,之后可以从这个文件恢复容器的运行状态。
- 依赖:需要运行时(如 containerd)和 Docker 守护进程支持此功能。
示例:

(图片来源网络,侵删)
# 从名为 my-checkpoint 的检查点恢复容器 docker start --checkpoint my-checkpoint my-container
--checkpoint-dir
- 作用:指定检查点文件的存储目录。
- 场景:与
--checkpoint配合使用,用于指定检查点文件的位置。
示例:
# 从指定目录下的检查点恢复容器 docker start --checkpoint-dir /path/to/checkpoints --checkpoint my-checkpoint my-container
实战示例
假设我们有一个已经停止的容器 my-app。
示例 1:最基本的启动
# 使用容器名称启动 docker start my-app # 使用容器 ID (前几位即可) 启动 docker start a1b2c3d4e5f6
执行后,容器会在后台运行。
示例 2:启动并附加到容器
# 启动容器,并立即查看其输出 docker start -a my-app
这会启动容器,并将容器的 stdout 和 stderr 打印到你的终端,如果容器运行的是一个 Web 服务器,你可能会看到启动日志。

(图片来源网络,侵删)
示例 3:启动多个容器
# 同时启动 my-app 和 my-database 两个容器 docker start my-app my-database
示例 4:结合 docker ps 查看结果
启动容器后,你可以使用 docker ps 来确认它是否正在运行。
# 启动容器 docker start my-app # 查看正在运行的容器 docker ps # 你应该能在列表中看到 my-app,STATUS 列会显示 "Up" 及其运行时间
相关命令
理解 docker start 时,最好也了解它的“兄弟”命令:
| 命令 | 作用 | 对比 docker start |
|---|---|---|
docker run |
创建一个新的容器并启动它,如果容器不存在,它会先创建。 | docker start 只作用于已存在的停止状态的容器。docker run 是从零开始。 |
docker stop |
停止一个正在运行的容器,发送 SIGTERM 信号,等待 graceful shutdown。 |
docker start 的反操作,用于从“运行”变为“停止”。 |
docker restart |
停止然后重新启动一个容器,可以看作是 docker stop + docker start 的快捷方式。 |
它是一个组合命令,而 docker start 只是启动部分。 |
docker pause |
暂停容器中所有进程。 | docker start 会将容器从“暂停”状态恢复到“运行”状态。docker unpause 也能做到这一点,但 docker start 更通用。 |
| 参数 | 全称 | 描述 |
|---|---|---|
-a |
--attach |
启动后附加到容器的标准输出流 |
-i |
--interactive |
以交互模式运行,保持标准输入打开 |
--checkpoint |
从指定检查点恢复容器(实验性功能) | |
--checkpoint-dir |
指定检查点文件的存储目录(实验性功能) |
对于绝大多数日常使用场景,你只需要记住:
docker start <container_name/container_id>:在后台启动一个已停止的容器。docker start -a <container_name/container_id>:启动容器并立即查看其输出。
