.dockerignore 如何工作,它与 .gitignore 的规则有何差异?
围绕“.dockerignore 如何工作,它与 .gitignore 的规则有何差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清排除模式语法与对 COPY/ADD 及上下文传输的双重影响。
程序员面试题库第 31 页,收录第 1501–1550 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
围绕“.dockerignore 如何工作,它与 .gitignore 的规则有何差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清排除模式语法与对 COPY/ADD 及上下文传输的双重影响。
围绕“ENTRYPOINT 与 CMD 在镜像启动时如何组合,如何设计可覆盖的默认行为”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清两者拼接为最终命令行的规则及 docker run 覆盖 CMD 的行为。
围绕“docker buildx build --output 有哪些输出类型,何时导出 OCI tarball 而非推送”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要比较 registry、local、tar、oci 输出及离线分发与产物导出的适用场景。
围绕“直接用 Git 仓库 URL 作为 Docker 构建上下文时构建器做了什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明自动克隆、引用指定与子目录支持,以及它和本地上下文的差异。
围绕“在 Dockerfile 中定义 HEALTHCHECK 会怎样影响镜像与容器运行状态”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明健康检查指令固化在镜像中的语义与 status 展示。
围绕“BuildKit 支持的 Dockerfile heredoc 语法解决了哪些写法痛点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明多行 RUN/COPY 脚本免于转义与链式 && 的可读性收益及语法版本要求。
本文解释 Docker 镜像的层结构、只读与共享机制。说明层如何通过内容寻址复用,容器利用可写层隔离写操作,并讨论其适用边界。
围绕“系统性地减小 Docker 镜像体积有哪些互不相同的手段”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖按基础镜像、层合并、清理缓存、多阶段四类归纳手段与边界,不深入某一具体手段的文档细节。
围绕“Docker 镜像 tag 与 digest 的关系是什么,latest 到底意味着什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖澄清 tag 是可变指针、latest 只是默认标签。
围绕“如何用 docker buildx build --platform 一次构建多架构镜像”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清 buildx 多平台构建与 manifest list 的关系及推送要求,不深入 QEMU 模拟细节。
围绕“Docker 多阶段构建解决了什么问题,最终镜像包含哪些阶段的内容”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明编译环境与运行时分离、仅拷贝产物的机制。
解释 --target 如何指定多阶段 Dockerfile 的构建终点,在 CI 中的典型用途是生成测试镜像和调试镜像,并对比传统构建器与 BuildKit 在依赖裁剪上的差异。
围绕“构建步骤需要访问网络时,--network 与构建隔离的默认值是什么,何时要改”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清默认网络、host 模式与代理透传的场景及安全考虑。
围绕“Docker 镜像遵循的 OCI image-spec 定义了哪几部分,digest 如何计算”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清 manifest、config、layer 与内容寻址的关系。
围绕“Docker 容器写文件时 OverlayFS 的写时复制(copy-on-write)会发生什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清容器可写层如何复制只读层文件以及性能影响。
围绕“为什么用 image@sha256 摘要固定基础镜像比 tag 更可靠,代价是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 tag 可变与摘要不可变的差异及升级维护成本。
围绕“Docker 构建中 BUILDPLATFORM、TARGETPLATFORM 等预定义 ARG 有什么用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明交叉构建时平台变量的取值与典型用法。
围绕“BuildKit 构建时附加的 provenance 与 SBOM attestation 包含什么、如何验证”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明构建来源证明与软件清单的生成、存储与查验方式。
围绕“跨架构构建时 QEMU 模拟何时被触发,对构建速度有何影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释无原生节点时二进制翻译的开销及何时改用交叉编译或远程原生 builder。
围绕“为什么对远程 Dockerfile(如 stdin 或 URL)执行构建需要警惕恶意指令”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明远程上下文构建的信任边界与审查要点。
围绕“要让 Docker 镜像可重复构建,需要固定哪些可变来源”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖枚举基础镜像摘要、包版本、构建时间与外部网络资源等变量。
围绕“为什么 RUN apt-get update && apt-get install 必须写在同一条指令里”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕用 update 层缓存命中而 install 拿到过期索引的失败案例说明原因,不泛化到所有包管理器细节。
围绕“什么样的程序适合用 FROM scratch 构建镜像,静态编译要满足什么条件”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明空镜像的适用条件(静态链接、证书、时区数据自带)与限制。
围绕“为什么构建期私密信息应使用 RUN --mount=type=secret 而不是 ARG”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要对比 ARG 会进入镜像历史与元数据、secret 挂载不落盘的差异。
围绕“Dockerfile 中 CMD/ENTRYPOINT 的 shell 形式与 exec 形式对信号处理有何影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 shell 形式多出的 /bin/sh 父进程导致信号无法直达应用的问题。
围绕“选择 alpine、debian slim 或 distroless 基础镜像分别要接受什么取舍”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要比较 musl/glibc 兼容性、调试工具缺失与体积安全的权衡。
围绕“构建时间戳写进镜像层为什么会破坏可重复构建,如何规避”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释嵌入时间导致 digest 漂移的问题与固定时间戳等手段。
围绕“Docker 构建中如何用 RUN --mount=type=ssh 拉取私有 Git 依赖”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清 ssh-agent 转发挂载的机制与限制。
围绕“Dockerfile 首行的 # syntax= 指令声明了什么,为什么影响可用特性”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释外部前端镜像决定解析能力、可独立升级获取新语法的机制,不逐项罗列全部新语法。
围绕“RUN --mount=type=bind 与 type=tmpfs 在 Dockerfile 构建中各自适合什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分绑定挂载上下文只读内容与临时内存文件系统的使用场景。
围绕“BuildKit 相比旧版 Docker 构建器有哪些核心改进”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖概括并行构建、增量传输、缓存导入导出与扩展语法等差异,不逐项展开每个 BuildKit 特性。
围绕“Docker bind mount 的挂载传播(rshared/rslave 等)在什么场景下必须配置”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明容器内再挂载需要传播给宿主机的场景与选项含义。
围绕“如何限制 Docker 容器对磁盘的读写 IOPS 与吞吐量”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出 --device-read-bps/--device-write-iops 的用法与 blkio cgroup 限制对象。
围绕“Docker 容器访问外网与端口映射背后 iptables NAT 规则是如何工作的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 MASQUERADE 出站与 DNAT 入站规则的生成时机。
本题解释Docker -m/--memory限制触发cgroup OOM killer的机制,说明主进程被杀时的表现(SIGKILL、退出码137),并给出通过docker inspect和dmesg验证的具体方法,同时区分容器存活与主进程被杀的情况。
围绕“同一宿主机上两个 Docker 容器互相访问的正确做法是什么,为什么不建议直接写死对方 IP”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明放入同一自定义网络用容器名解析的原因(IP 会变)。
围绕“排查 Docker 容器网络不通时,应该按什么顺序检查哪些配置与命令”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出从网络归属、DNS、端口映射到 iptables 的排查顺序。
本文解析 Docker 中 --cpu-shares 与 --cpus(CFS quota)在 CPU 争抢与空闲时的不同机制:shares 为相对权重软限制,cpus 为绝对硬限制;并通过场景和边界说明如何选择。
围绕“如何用 --cpuset-cpus 把 Docker 容器绑定到指定 CPU 核,这解决什么性能问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明绑核的用法与减少上下文切换/缓存失效的收益。
围绕“如何为 Docker 容器自定义 DNS 服务器与搜索域,哪些网络模式下生效”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 --dns/--dns-search 的用法及在用户自定义网络中被嵌入式 DNS 代理的语义。
围绕“如何查看 Docker 容器健康检查的历史结果与失败输出,用于定位问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 inspect 中 State.Health.Log 的字段含义与解读。
围绕“Dockerfile 的 HEALTHCHECK 指令由哪些参数构成,状态如何流转”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 interval/timeout/start-period/retries 的语义与 starting→healthy/unh。
围绕“为什么 Docker 健康检查显示 unhealthy 时容器不会自动重启,如何与 restart policy 配”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明健康状态不触发重启的内置行为及与 --restart 的边界。
围绕“为什么 Docker 的 host 网络模式在 Docker Desktop(Mac/Windows)上行为与 Li”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明桌面版 Docker 运行在 Linux VM 中导致 host 指向 VM 而非真宿主机。
围绕“Docker 的 --init 选项解决了 PID 1 不回收僵尸子进程的问题,其原理是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 tini 作为 PID 1 转发信号并回收孤儿进程的机制。
围绕“如何为 Docker 容器配置日志轮转(max-size/max-file),全局与单容器配置如何覆盖”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 daemon.json 全局配置与 --log-opt 单容器覆盖关系。
围绕“Docker 日志驱动的 blocking 与 non-blocking 模式在日志洪峰时对应用有什么不同影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 blocking 可能阻塞应用而 non-blocking 可能丢日志(max-buffer-size)的取舍。
围绕“Docker 默认的 json-file 日志驱动有什么特点,为什么不配置会导致磁盘被打满”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明日志写入宿主机文件且无默认轮转的风险。
围绕“什么场景应把 Docker 日志驱动切换为 fluentd/syslog 等远端驱动,切换后对 docker log”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明集中式日志采集场景及非本地驱动下 docker logs 失效的代价。
围绕“使用非本地日志驱动时如何保留 docker logs 能力,Docker 的 dual logging 缓存如何开启”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 cache 模式在远端驱动下保留本地可读日志的机制与限制。