2026-10-28 00:39:06
Docker面试总结
一、Docker基础概念
二、Docker关键组件与工具
Dockerfile
定义:用于自动化构建镜像的脚本文件,包含一系列指令(如FROM、RUN、COPY等)。
构建命令:在Dockerfile所在目录执行docker build --tag name:tag .,生成指定名称和版本的镜像(tag默认为latest)。
示例:通过FROM nginx指定基础镜像,COPY . /usr/share/nginx/html复制文件到容器。
Docker Compose
作用:通过YAML文件(docker-compose.yml)定义多容器应用(如Java+MySQL+Nginx),一键启动或停止整个环境。
核心命令:
docker-compose up -d:后台启动服务。
docker-compose down:停止并删除容器。
优势:避免手动配置容器间依赖、网络和存储等参数。
Portainer
功能:Docker图形化管理工具,支持:
容器/镜像/网络/数据卷的增删改查。
集群管理(Swarm模式)、日志监控、用户权限控制。
应用模板快速部署(如WordPress、Redis)。
适用场景:中小型团队或开发测试环境。
三、Docker服务环境构建流程
镜像打包
将应用(如Nginx、MySQL、Tomcat)及其配置打包为独立镜像。
示例:Nginx镜像需映射配置文件到宿主机,实现外部修改配置。
环境管理
使用docker-compose.yml定义服务依赖、端口映射、环境变量等。
关键配置:
services: web: image: nginx ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example部署与迁移
步骤:
服务器安装Docker和Docker Compose(如CentOS 7.6通过yum install)。
运行docker-compose up -d启动服务。
将配置文件(如docker-compose.yml、Nginx配置)提交至Git,新服务器直接git clone后部署。
对比传统方式:避免手动安装依赖、配置环境变量等繁琐操作。
四、常用命令与操作
docker ps:查看运行中的容器。
docker logs [ID/名称]:查看容器日志。
docker exec -it [ID/名称] bash:进入容器命令行(若报错可尝试sh)。
docker images:列出本地镜像。
docker rmi [镜像ID]:删除镜像。
docker container prune:删除所有已停止的容器。
docker system prune:清理未使用的镜像、网络等。
五、面试高频问题
Docker与虚拟机(VM)的区别
隔离层级:Docker共享宿主机内核,VM通过Hypervisor虚拟硬件。
性能:Docker启动快(秒级),资源占用低;VM启动慢(分钟级),资源开销大。
适用场景:Docker适合微服务、CI/CD;VM适合多租户隔离或运行不同OS。
如何优化Docker镜像体积
使用轻量级基础镜像(如alpine版本)。
合并多层RUN指令,减少中间层。
清理缓存和临时文件(如apt-get clean)。
Docker网络模式
Bridge模式:默认模式,容器通过虚拟网桥通信。
Host模式:容器直接使用宿主机网络,性能高但隔离性差。
None模式:无网络配置,需手动管理。
数据持久化方案
Volumes:Docker管理,存储在宿主机特定目录(推荐)。
Bind Mounts:直接映射宿主机目录,适合开发调试。
六、总结Docker通过容器化技术显著提升了应用部署的效率和一致性,结合Docker Compose和Portainer等工具可进一步简化多容器管理。掌握镜像构建、网络配置、数据持久化等核心技能,能高效应对开发、测试及生产环境需求。