Docker 的常用操作和原理了解多少?

运维/DBA第 12 / 13 题答题框架
参考思路:镜像分层与 UnionFS→容器隔离(namespace/cgroup)→网络模式→常用命令(build/run/exec/logs)→数据卷持久化。

五个经典回答示范

回答一 · 校招应届版

三层讲:概念——镜像分层只读模板、容器是镜像的运行实例、仓库分发镜像;原理——namespace 做隔离(pid/net/mnt 等六个)、cgroup 做资源限制、UnionFS 分层存储写时复制;常用命令——build 打镜像、run 起容器(常用参数:d 后台、p 端口、v 挂载、restart 策略)、exec 进容器、logs 看日志。镜像写法我注意多阶段构建减小体积、非 root 用户运行。

回答二 · 1-3年经验版

我讲实践场景:把一个 Java 服务容器化。要点:基础镜像选 jre-slim 而非 jdk(体积 280M 到 90M);多阶段构建——构建层用 maven、运行层只拷 jar;JVM 参数容器感知(内存感知,-XX:MaxRAMPercentage);健康检查配置让编排系统能感知存活;日志打到 stdout 由收集器统一收。踩过的坑:容器内时区与字体缺失导致验证码图片乱码——基础镜像按需补包要有清单意识。

回答三 · 资深版

资深视角:容器化改变的是软件交付的度量衡。三个深层认知:一,不可变基础设施——容器思想是环境即版本,排障时容器可丢弃重建,把『修』变成『换』,这对运维心智是革命;二,镜像即供应链——基础镜像来源可信、扫描 CVE、镜像签名(content trust),供应链安全在容器时代具体化;三,单容器单进程的纪律——容器不是虚拟机,sshd 进容器、一容器跑全家桶都是反模式,日志与数据走挂载与外部服务。

回答四 · 追问应对

追问『容器和虚拟机区别』:容器共享宿主内核、隔离的是进程视角,启动秒级密度高;虚拟机独立内核隔离强代价大;『数据怎么持久化』:volume 由引擎管理、bind mount 直接挂目录,数据库类容器数据必须外置或用专用卷;『容器删了文件去哪了』:写层随容器删除——要持久的内容必须在挂载卷里。

回答五 · 反面示范

『Docker 就是新的虚拟机,进容器当服务器用,装 sshd vim 一堆东西,一个容器跑 nginx 加应用加数据库最方便,反正能跑就行。』——点评:全家桶容器丧失容器化的全部好处——不可变、可水平扩展、故障隔离全没有;『能跑就行』的镜像越滚越大越危险。

怎么练这道题
  1. 打开 模拟练习,选择「运维/DBA」方向,限时 3 分钟作答本题。
  2. 对照上方答题框架,逐点检查:哪些要素没覆盖、哪里表达啰嗦。
  3. 用自己项目的真实经历替换框架中的占位内容,重讲一遍并录音回听。

这类题在真实面试中常被追问细节,
建议进入限时模式练一遍。

开始限时演练