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

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

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

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

相关推荐
跃龙客21 小时前
Visual Studio项目文件配置三方库笔记
ide·笔记·visual studio
OopspoO1 天前
我的博客同步
笔记
沐墨专攻技术1 天前
一、项目初始化
笔记·学习
雾岛听蓝1 天前
Linux文件系统:从硬件到软硬链接
linux·经验分享·笔记
@蓝莓果粒茶1 天前
OpenClaw 最终安装指南:Windows 下用 WSL2 + Ubuntu 跑通源码版
笔记·ai
左左右右左右摇晃1 天前
K8s笔记整理
笔记
Rhystt1 天前
斑马问题|离散数学|爱因斯坦的谜题你能解开吗?
经验分享·笔记
ouliten1 天前
C++笔记:std::numeric_limits
c++·笔记
承渊政道1 天前
C++学习之旅【C++伸展树介绍以及红黑树的实现】
开发语言·c++·笔记·b树·学习·visual studio
IT界的老黄牛1 天前
【IT老齐230 笔记 + 思考】金融业容灾方案“两地三中心“是什么意思?
数据库·笔记·架构