docker 容器管理入门教程
一、核心概念
-
容器(Container)
Docker 容器是镜像的运行实例,类似于轻量级虚拟机,但更高效。容器通过镜像创建,可独立运行应用。 -
镜像(Image)
镜像是静态文件,包含应用代码、依赖和运行时环境。通过docker run
创建容器时,会基于镜像生成容器。
二、docker start
命令详解
用途:启动已停止的容器。
基本语法:
docker start [OPTIONS] CONTAINER [CONTAINER...]
常用选项:
-a, --attach
:附加到容器,实时显示输出(默认不附加)。-i, --interactive
:交互式启动,保持标准输入打开(常用于需要输入的场景)。
示例:
- 启动名为
my_container
的容器:docker start my_container
- 交互式启动并附加输出:
docker start -ai my_container
注意:
- 只能启动已存在的容器。若容器不存在,报错
Error response from daemon: No such container
。 - 容器状态需为
Exited
(已停止),否则报错container is already running
。
三、docker stop
命令详解
用途:优雅停止正在运行的容器(发送终止信号,等待进程结束)。
基本语法:
docker stop [OPTIONS] CONTAINER [CONTAINER...]
常用选项:
-t, --time=10
:指定等待时间(秒),超时后强制终止。默认 10 秒。
示例:
- 停止名为
my_container
的容器:docker stop my_container
- 等待 60 秒后强制停止:
docker stop -t 60 my_container
注意:
- 容器停止后状态变为
Exited
,可通过docker start
重新启动。 - 若需立即终止,可使用
docker kill
(发送 SIGKILL 信号)。
四、docker run
vs docker start
命令 | 用途 | 场景 |
---|---|---|
docker run | 创建并启动新容器(基于镜像) | 首次运行镜像或创建新实例 |
docker start | 启动已停止的容器 | 重启之前停止的容器 |
示例对比:
# 创建并启动新容器(镜像为 nginx)
docker run -d --name web_server nginx# 启动已停止的容器
docker start web_server
五、容器生命周期管理
-
查看容器状态:
docker ps -a # 列出所有容器(运行中/已停止)
-
删除容器:
docker rm my_container # 删除已停止的容器 docker rm -f my_container # 强制删除正在运行的容器
-
重启容器:
docker restart my_container # 等价于 stop + start
六、最佳实践
-
命名容器:
使用--name
为容器指定易记的名称,避免操作时依赖随机 ID。docker run -d --name mysql_db mysql:latest
-
持久化数据:
使用卷(Volume)或绑定挂载(Bind Mount)保存数据,防止容器删除后数据丢失。docker run -v /host/path:/container/path mysql:latest
-
日志监控:
实时查看容器日志:docker logs -f my_container
-
进入容器调试:
docker exec -it my_container /bin/bash # 进入容器 Shell
七、常见问题
-
容器无法停止:
使用docker kill
强制终止:docker kill my_container
-
启动失败:
- 检查容器日志:
docker logs my_container
- 查看容器状态:
docker inspect my_container
- 检查容器日志:
-
端口冲突:
确保主机端口未被占用:lsof -i :8080 # 检查 8080 端口占用
八、总结
docker start
:启动已存在的容器。docker stop
:优雅停止容器,支持超时设置。docker run
:创建并启动新容器,与start
互补。- 结合
docker ps
、docker logs
等命令,可高效管理容器生命周期。
通过掌握这些命令,您可以灵活控制 Docker 容器的启停,为应用部署和运维打下坚实基础。