docker start 是什么
docker start 用于重新启动一个已经存在的容器,容器创建时的配置、网络、卷挂载与容器内文件改动都会保留。它与 run 的分工很清楚:run 新建容器,start 把已有容器拉起来;想改端口或挂载参数只能删除重建,start 不接受新的运行时参数。
基本信息
| 与 run 区别 | start 复用已有容器,run 新建容器 |
|---|---|
| 保留内容 | 配置、网络、卷挂载与容器内的文件改动 |
| 附加输出 | 加 -a 前台附加到容器输出 |
| 批量操作 | 可一次传入多个容器名或 ID |
| 自动恢复 | 配合重启策略,机器重启后可自动拉起 |
| 适用场景 | 机器重启后恢复、暂停后继续、临时停服维护 |
使用示例
使用示例
docker ps -a # 找到已停止的容器
docker start myapp # 后台启动,保留原配置
docker start -a myapp # 前台附加输出
docker start web db cache # 一次启动多个容器
docker update --restart unless-stopped myapp # 让机器重启后自动拉起典型使用场景
- 宿主机重启后把之前停掉的业务容器重新拉起来
- 临时停服维护后恢复服务,无需重新准备启动参数
- 排查问题时只重启单个容器,避免影响同机其他服务
- 给运行中的容器补上重启策略,减少人工恢复动作
start 不会应用新的运行时参数:端口、环境变量、挂载路径的任何改动都必须删除容器后重建,停止再启动做不到。
想让容器在机器重启后自动恢复,要在 run 时或之后配置重启策略;默认策略下容器不会自己起来。
docker start -a 之后按 Ctrl-C 会向容器发送中断信号,可能直接把服务停掉;只想看日志请用 docker logs -f。
启动失败时 start 只给出一个错误码,细节要看 logs 与 inspect 的状态字段;如果容器启动后立刻退出,通常是主进程命令执行完就结束,或者配置项本身有误。
要把 start 与重启策略区分开:重启策略由守护进程在容器异常退出后自动执行,start 则是人工触发的一次启动;排障时先看退出码与状态,再决定是重启还是重建。