docker常见考点
一、基础概念类
-
Docker与虚拟机的区别
- Docker基于容器化技术,共享宿主机内核,资源消耗更少;虚拟机通过Hypervisor虚拟化硬件,资源占用高。
- Docker启动速度更快(秒级),虚拟机需要启动完整操作系统(分钟级)。
-
Docker的核心组件
- 镜像(Image)、容器(Container)、仓库(Repository)、客户端/守护进程(Client/Daemon)。
-
Docker的优势
- 环境一致性、快速部署、资源高效利用、支持微服务架构。
-
Docker的架构
- 客户端-服务器模型,包含Docker Daemon、REST API、CLI。
二、镜像管理类
-
镜像与层的区别
- 镜像是只读的层堆叠,每层代表Dockerfile中的一条指令。
-
Dockerfile常用指令
FROM
(基础镜像)、RUN
(执行命令)、COPY/ADD
(复制文件)、ENV
(设置环境变量)、EXPOSE
(暴露端口)。
-
优化Dockerfile的方法
- 多阶段构建、合并
RUN
指令减少层数、使用.dockerignore
排除无用文件。
- 多阶段构建、合并
-
镜像构建缓存机制
- Docker按层缓存,若某层及之前的指令未变化,则复用缓存加速构建。
三、容器操作类
-
容器生命周期管理
- 创建(
docker create
)→ 启动(docker start
)→ 运行 → 停止(docker stop
)→ 删除(docker rm
)。
- 创建(
-
查看容器日志
docker logs <容器ID>
,可加-f
参数实时跟踪。
- 数据持久化方法
- 使用Volume(数据卷)或Bind Mount(绑定挂载),Volume由Docker管理,Bind Mount依赖宿主机路径。
- 容器间通信方式
- 通过共享网络命名空间、Docker网络(如bridge网络)、或环境变量传递信息。
四、网络与安全类
- Docker网络模式
- Bridge(默认)、Host(共享宿主机网络)、None(无网络)。
- 容器安全最佳实践
- 以非root用户运行容器、定期更新镜像、限制资源使用(CPU/内存)、扫描镜像漏洞。
- 容器与宿主机如何通信
- 通过端口映射(
-p
参数)或宿主机网络模式(--network=host
)。
五、高级应用与工具类
- Docker Compose的作用
- 通过YAML文件定义多容器应用,实现一键启动和依赖管理。
- Docker Swarm与Kubernetes区别
- Swarm是Docker原生集群工具,简单易用;Kubernetes功能更强大,适合复杂场景。
- 多阶段构建的应用场景
- 分离构建环境和运行环境,减少最终镜像大小(例如:编译代码后仅保留可执行文件)。
- 如何实现容器的高可用性
- 使用Swarm或Kubernetes编排工具,结合健康检查(
HEALTHCHECK
指令)和自动重启策略。
- 生产环境迁移注意事项
- 确保镜像版本固定、配置文件与环境分离、日志集中管理、备份Volume数据。
六、高频命令总结(附证据来源)
命令示例 | 作用 | 来源 |
---|---|---|
docker build -t <镜像名> | 构建镜像 | |
docker run -d -p 80:80 | 启动容器并映射端口 | |
docker exec -it <ID> sh | 进入运行中的容器 | |
docker volume create | 创建数据卷 | |
docker swarm init | 初始化Swarm集群 |
七、扩展考点(针对高级岗位)
- Docker与CI/CD集成:如何在Jenkins/GitLab中自动化构建和部署。
- 容器监控工具:Prometheus+Grafana监控容器资源。
- 安全加固:使用Seccomp限制系统调用、AppArmor配置安全策略。
以上题目覆盖了Docker面试的核心知识点,建议结合实际操作和原理理解进行准备,尤其在镜像优化、网络配置和编排工具方面需重点深入。