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