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

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

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

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

相关推荐
Nice_Fold11 分钟前
Kubernetes命名空间与Pod核心概念(自用笔记)
笔记·容器·kubernetes
你数过天上的星星吗16 分钟前
Python学习笔记一(标识符、关键字、变量、数据类型、关系运算)
笔记·python·学习
轻舟行719 分钟前
ctfshow-Web应用安全与防护challenge做题笔记 长期更新
笔记·web安全·网络安全
想成为优秀工程师的爸爸9 小时前
第十九篇技术笔记:UDP——相思传得快,飞鸽传书在
笔记·网络协议·tcp/ip·udp·信息与通信
Yeh20205813 小时前
cookie与Session笔记
笔记
d111111111d13 小时前
STM32-UART封装问题解析
笔记·stm32·单片机·嵌入式硬件·学习·算法
寒秋花开曾相惜14 小时前
(学习笔记)4.2 逻辑设计和硬件控制语言HCL(4.2.1 逻辑门&4.2.2 组合电路和HCL布尔表达式)
linux·网络·数据结构·笔记·学习·fpga开发
Yeh20205814 小时前
request与response笔记
java·前端·笔记
Fuyo_111915 小时前
C++ 内存管理
c++·笔记
柳鲲鹏15 小时前
李善兰和牛顿,谁剽窃谁的运动三定律
笔记