容器是镜像的运行实例,本质为受隔离、有资源限制的进程,共享宿主机内核,通过命名空间和cgroups实现轻量级沙箱;镜像只读,容器可写,同一镜像可启多个独立容器;其五种核心状态为Created、Running、Stopped、Paused、Deleted,对应创建、运行、停止、暂停、删除操作。

容器是镜像的运行实例,本质是主机上一个受隔离、有资源限制的进程。它不是虚拟机,不带操作系统内核,而是共享宿主机内核,靠命名空间(隔离视图)和 cgroups(限制资源)实现轻量级沙箱环境。
容器与镜像的关系
镜像是只读模板,包含应用代码、依赖、配置等;容器是镜像启动后的可写实例。镜像像“类”,容器像“对象”——同一镜像可同时运行多个容器,彼此独立、互不影响。容器启动时,会在镜像顶部叠加一层可写层,所有运行时修改(如日志、临时文件)都发生在此层,不影响底层镜像。
容器的五种核心状态
容器生命周期围绕五个明确状态展开,每种状态对应典型操作:
- Created(初建):执行
docker create后的状态。此时文件系统已准备就绪,但进程未启动,不消耗 CPU 或网络资源 - Running(运行):通过
docker run或docker start进入。主进程正在运行,可对外提供服务 - Stopped(停止):执行
docker stop(优雅终止)或docker kill(强制终止)后进入。容器进程已退出,但文件系统仍保留,可再次启动 - Paused(暂停):用
docker pause冻结容器,CPU 调度被挂起,内存和网络状态保持不变;docker unpause可瞬时恢复,适合临时调试或资源腾挪 - Deleted(删除):仅能对已停止容器执行
docker rm。一旦删除,可写层及容器元数据彻底清除,不可恢复
常用命令与典型场景
掌握几个关键命令就能覆盖大多数管理需求:
-
docker run -d --name web01 -p 8080:80 nginx:后台启动 Nginx 容器,映射端口,自动拉取镜像(若本地不存在) -
docker ps查看运行中容器;docker ps -a查看全部容器(含已停止) -
docker logs -f web01实时跟踪容器日志,排查启动失败或运行异常 -
docker exec -it web01 sh进入容器交互式终端,用于调试或临时检查 -
docker stop web01 && docker rm web01停止并清理容器;加-v参数可一并删除关联的数据卷(谨慎使用)
为什么状态管理很重要
理解状态转换能避免常见误操作。例如:docker rm 无法删除运行中的容器,必须先 stop;pause 不释放内存,不能替代 stop 来节省资源;create 后不 start,容器永远处于静默待命状态。这些逻辑直接关系到部署可靠性与资源利用率。