容器状态直接影响宿主机资源占用:created几乎零开销;running全面消耗CPU、内存、网络、存储;paused冻结CPU但保留内存和网络连接;exited释放CPU内存但残留磁盘空间;dead需人工干预,deleted才彻底清空资源。

容器不同状态对宿主机资源占用差异明显,关键看进程是否在运行、是否被调度、是否持有资源。
created(已创建未启动)
此时容器仅完成镜像层叠加和配置初始化,不启动任何进程。系统只分配少量元数据空间,不占用 CPU、内存或网络带宽。磁盘上保留镜像各层 + 一个空的可写层,整体开销极低,适合批量预创建场景。
running(运行中)
这是唯一真正消耗计算资源的状态:
- CPU:主进程(PID 1)被内核调度,持续或间歇占用 CPU 时间片
- 内存:加载应用代码、运行时、堆栈及缓存,实际用量可通过 docker stats 实时查看
- 网络:iptables 规则生效,端口映射激活,网络栈完整初始化
- 存储:可写层开始记录文件变更,日志、临时文件等持续写入
paused(暂停)
容器进程被 cgroups freezer 冻结,不再获得 CPU 调度,但所有资源仍被保留:
- CPU:完全不占用,进程处于不可中断睡眠状态(D 状态)
- 内存:不释放,整个进程地址空间保留在 RAM 中
- 网络与存储:连接未断开,挂载点仍在,端口仍被占用(但无流量处理)
适合临时腾出 CPU 给其他任务,又不想丢失当前上下文。
exited / stopped(已退出)
主进程终止,CPU 和内存立即释放,但部分资源仍残留:
- CPU / 内存:归还给宿主机,基本为零占用
- 磁盘:可写层未删除,仍占用存储空间(尤其日志或临时文件堆积时)
- 网络:iptables 规则清理延迟可能存在,但通常秒级释放
大量 exited 容器长期不删,会导致磁盘缓慢耗尽,是运维中最常见的隐性负载来源。
dead(死亡)与 deleted(已删除)
dead 是异常状态,常见于容器进程僵死、与 dockerd 通信中断或宿主机资源严重不足时。此时容器元数据卡住,可能持续占用少量内存和句柄,需重启 dockerd 或强制清理。
deleted 后所有资源(包括可写层、网络配置、元数据)彻底释放,宿主机负载回归初始状态。








