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.镜像和容器的区别

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

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

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

相关推荐
qq_2842740511 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
qq_2842740513 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
Titan202413 小时前
MySQL访问个人学习笔记
笔记·学习·mysql
深圳老胡15 小时前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
坤坤子吖15 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
乐橙开放平台15 小时前
智慧连锁客流检测和离岗检测怎么对接
大数据·人工智能·笔记·物联网·自动化·音视频·智能家居
零基础12315 小时前
FinalShell 使用教程:从安装到高效运维
运维·经验分享·笔记·finalshell
ACP广源盛1392462567316 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
敲个大西瓜17 小时前
langchain笔记(一)
redis·笔记·langchain
带金箍的至尊宝17 小时前
系统架构设计师笔记 05:第2章硬件与软件基础,冯诺依曼结构怎么考
数据库·笔记·系统架构