一、基础概念类
Docker 是什么?与虚拟机有何本质区别?
- 详解:Docker 是基于容器的轻量级虚拟化技术,通过共享宿主机内核实现进程级隔离。相比虚拟机(需完整操作系统,资源占用大),Docker 启动更快(秒级)、资源占用更低(镜像仅 MB 级),但隔离性较弱(依赖 Linux Namespace/CGroups)。
- 参考:Docker 与虚拟机区别详解
Docker 三大核心组件及其关系?
- 详解:
- 镜像(Image):只读模板(如
nginx:alpine),含应用环境与代码。 - 容器(Container):镜像的运行实例,含可写层。
- 仓库(Registry):存储镜像的平台(如 Docker Hub)。
- 关系:仓库 → 下载镜像 → 创建容器 。
- 镜像(Image):只读模板(如
- 参考:三大核心解析
- 详解:
为何使用 Docker?核心优势是什么?
- 详解:
- 环境一致性:镜像打包应用+依赖,避免“开发-生产环境差异”。
- 资源高效:容器共享内核,资源利用率比虚拟机高 70%+。
- 快速部署:秒级启动,支持 CI/CD 流水线。
- 参考:Docker 核心优势分析
- 详解:
二、核心操作类
Dockerfile 中
COPY与ADD指令的区别?- 详解:
COPY:仅复制文件/目录到镜像(如COPY app.py /app)。ADD:额外支持自动解压压缩包、从 URL 下载(不推荐,需手动清理缓存)。
- 参考:Dockerfile 指令详解
- 详解:
如何持久化容器数据?
- 详解:
- 数据卷(Volume):
docker run -v /host/path:/container/path,数据存于宿主机,容器重启不丢失。 - 数据卷容器:专用容器管理卷,供其他容器挂载 。
- 数据卷(Volume):
- 参考:数据存储管理
- 详解:
容器常见状态及转换命令?
- 状态:
created→running→paused/exited→dead。 - 命令:
1
docker start/stop/pause/unpause/rm <container_id>
- 状态:
三、网络与存储
Docker 网络模式有哪些?适用场景?
模式 特点 场景 bridge(默认)容器通过 docker0网桥通信多容器隔离环境(如 Web 应用) host共享宿主机网络栈 高性能场景(如负载测试) overlay跨主机容器通信(Swarm/K8s) 集群部署 - 参考:网络模型详解
如何实现跨主机容器通信?
- 详解:
- Overlay 网络:基于 VXLAN 封装数据包,通过 UDP 传输(端口 4789)。
- Macvlan:为容器分配独立 MAC 地址,直连物理网络 。
- 详解:
四、容器编排与集群
Docker Compose vs Docker Swarm vs Kubernetes?
- 对比:
工具 定位 适用场景 Docker Compose 单机多容器编排 本地开发环境 Docker Swarm 轻量级集群管理 中小规模生产部署 Kubernetes 企业级容器编排 大规模微服务架构 - 参考:编排工具对比
- 对比:
如何用 Docker Compose 定义服务依赖?
- 示例:
1
2
3
4
5
6services:
web:
depends_on:
- db # 确保 db 先启动
db:
image: postgres - 参考:Compose 文件规范
- 示例:
五、实战调优与排错
如何优化 Docker 镜像体积?
- 技巧:
- 多阶段构建(移除编译依赖)。
- 使用 Alpine 等轻量基础镜像。
- 合并 RUN 指令减少镜像层 。
- 技巧:
查看容器日志的方法?
- 命令:
1
2docker logs -f <container_id> # 实时日志
docker inspect --format='{{.LogPath}}' <container_id> # 日志文件路径 - 参考:日志管理
- 命令:
六、高阶原理
Docker 如何实现资源隔离?
- 技术栈:
- Namespace:隔离进程、网络、文件系统等(如
PID、NET)。 - CGroups:限制 CPU/内存用量(如
docker run --cpus=2 --memory=1g)。
- Namespace:隔离进程、网络、文件系统等(如
- 技术栈:
容器退出后数据会丢失吗?
- 详解:默认停止的容器仍保留可写层(
docker ps -a可见),但删除容器后数据丢失,需用数据卷持久化 。
- 详解:默认停止的容器仍保留可写层(
附:完整学习资源
- 📚 Docker 面试题大全:2024 最新题库
- 🔧 命令速查表:Docker 常用命令详解
- ⚙️ 底层原理:Namespace/CGroups 解析