Docker面试题整理

1. Docker 是什么?

答案:

Docker 是一个开源的应用容器引擎,基于 Go 语言开发,遵循 Apache2.0 协议。

可以让开发者打包应用及依赖到一个轻量级、可移植的容器中 ,然后发布到任何主流 Linux 机器上,实现一次封装,到处运行

2. 容器 vs 虚拟机(必问)

答案:

  • 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件

  • 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了

  • 每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响

3. Docker 三大核心概念

答案:

  1. 镜像(Image):只读模板,用来创建容器。

  2. 容器(Container):镜像的运行实例。

  3. 仓库(Repository):存放镜像的地方(Docker Hub、私有仓库)。

4. Docker 为什么快?

答案:

  • 容器共享宿主机内核,不需要启动完整 OS

  • 容器是进程级启动,秒级启动

  • 联合文件系统(UnionFS),分层存储,复用层

5. Docker 常用命令(必背)

答案:

复制代码
# 搜索/拉取/查看/删除镜像
docker search
docker pull
docker images
docker rmi

# 容器操作
docker run        # 创建并启动
docker ps         # 查看运行中容器
docker ps -a      # 所有容器
docker start/stop/restart 容器ID
docker rm         # 删除容器
docker exec -it 容器ID /bin/bash  # 进入容器
docker logs 容器ID # 查看日志

6. docker run 常用参数

答案:

  • -d:后台运行

  • -p:端口映射 宿主机:容器

  • -P:随机端口

  • --name:指定容器名

  • -v:挂载目录

  • --restart=always:开机自启

  • -e:设置环境变量

7. Docker 数据卷(Volume)是什么?

答案:

数据卷是宿主机目录 / 文件,直接挂载到容器内部。

作用:

  • 持久化数据,容器删除数据不丢

  • 容器与宿主机共享数据

  • 多个容器共享数据

8. Docker 网络模式

答案:

四种常用网络模式:

  1. bridge:默认,独立网络,端口映射

  2. host:与宿主机共享网络

  3. none:无网络

  4. container:与另一个容器共享网络

    https://developer.aliyun.com/article/1688008 这个很重要

9. Dockerfile 是什么?

答案:

Dockerfile 是构建镜像的脚本文件,包含一条条指令。

通过 docker build 自动构建镜像。

10. Dockerfile 常用指令

答案:

复制代码
FROM         # 基础镜像
MAINTAINER   # 作者
RUN          # 构建时执行命令
CMD          # 容器启动默认命令
ENTRYPOINT   # 固定启动命令
EXPOSE       # 暴露端口
ENV          # 环境变量
ADD/COPY     # 拷贝文件
VOLUME       # 数据卷
WORKDIR      # 工作目录

11. CMD vs ENTRYPOINT

答案:

  • CMD:可被命令行参数覆盖

  • ENTRYPOINT

    :不会被覆盖,一定会执行

    常配合使用:

    ENTRYPOINT + CMD

12.如何优化 Docker 镜像体积?

  1. 选择体积小的基础镜像;

  2. 合并 RUN 命令;

  3. 删除无用缓存;

  4. 使用 .dockerignore

  5. 使用多阶段构建。

13.镜像和容器的区别

镜像是静态的模板,用于创建容器。

容器是镜像的运行实例,带有可写层。

多个容器可以共享同一个镜像。

相关推荐
RainCity2 天前
Java Swing 自定义组件库分享(十二)
java·笔记·后端
LinXunFeng9 天前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
闪闪发亮的小星星13 天前
高斯光以及高斯光公式解释
笔记
cqbzcsq13 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
阿米亚波13 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
自传.13 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding
.千余13 天前
【C++】模板进阶全解:非类型参数|全特化|偏特化|分离编译完全指南
开发语言·c++·笔记·学习·其他
自传.13 天前
尚硅谷 Vibe Coding|第二章 AI编程工具生态 学习笔记
笔记·学习·ai编程·尚硅谷·vibe coding
秋波。未央14 天前
Java Agent 开发 · Day 1 学习笔记(含作业完整标准答案)
java·笔记·学习
中屹指纹浏览器14 天前
2026指纹浏览器字体指纹、字体渲染偏差检测与全维度虚拟字体池搭建方案
经验分享·笔记