Docker容器启动和停止需区分新建运行与重启已有容器:docker run用于首次创建并启动(支持-d后台、-it交互等),docker start仅重启已停止容器;停止用docker stop(优雅终止)或docker kill(强制终止),状态通过docker ps/docker ps -a确认。

启动和停止 Docker 容器,关键在于区分“新建并运行”和“已有容器的启停”,操作逻辑不同,不能混用命令。
启动容器的两种方式
一种是首次创建并运行(docker run),另一种是重启已存在但已停止的容器(docker start)。
-
新建并后台运行一个容器:比如用 nginx 镜像启动,映射端口、指定名称:
docker run -d --name web -p 8080:80 nginx
若本地没有 nginx 镜像,Docker 会自动从 Docker Hub 拉取。 -
启动一个已停止的容器:比如之前运行过又 stop 了的 web 容器,只需执行:
docker start web
它不会重新拉镜像或重建容器,只是恢复原有状态运行。 -
启动时进入交互模式(适合调试):
docker run -it --rm ubuntu /bin/bash
-it启用交互终端,--rm表示退出后自动删除容器,避免残留。
停止容器的推荐做法
优先使用 docker stop,它发送 SIGTERM 信号让应用优雅关闭;只有在超时或进程无响应时才考虑 docker kill。
-
正常停止:
docker stop web
默认等待 10 秒,期间应用可完成清理(如保存数据、关闭连接)。 -
自定义超时时间(例如 5 秒):
docker stop -t 5 web -
强制终止(跳过优雅关闭):
docker kill web
适用于卡死或无法响应的容器,但可能丢失未刷新的数据。
确认容器状态与快速验证
执行启停操作后,用以下命令确认结果:
- 查看正在运行的容器:
docker ps - 查看所有容器(含已停止):
docker ps -a
重点关注 STATUS 列:显示 Up X minutes 表示运行中,Exited (0) 表示已停止且退出码为 0(正常)。 - 检查端口是否生效(如启动了 web):
浏览器访问http://localhost:8080,或用curl localhost:8080测试连通性。
常见误区提醒
容易混淆的几个点,注意避开:
-
docker run每次都新建容器;docker start只针对已有容器 ID 或名称——不要对已运行的容器再 run,否则会报端口冲突或名称重复。 - 容器停止后仍保留在系统中(状态为 Exited),不是被删除;真正清理需用
docker rm web。 - Docker 服务本身必须先运行:如果
docker ps报错“Cannot connect to the Docker daemon”,要先启动服务:sudo systemctl start docker(Linux)。


















