Docker面试题
1 docker的本质是什么?
docker是轻量级的沙盒。本质上是一种轻量级的虚拟化解决方案。它通过封装应用及其依赖(代码、运行时、库、配置文件等)到一个独立的“容器”中,实现跨环境的一致运行。
技术基础:
- 依赖 Linux 内核的命名空间(Namespaces)和控制组(Cgroups)来隔离进程和资源。
- 使用镜像(Image)作为容器的蓝图,镜像是只读的模板,容器是运行时的实例。
2 docker是运行时吗?
部分正确,但不全面:
- Docker 提供了运行时环境(Docker Runtime),负责启动和管理容器实例,比如通过 docker run 命令执行容器。
- 但 Docker 不仅仅是运行时,它还包括:
- 镜像构建:通过 Dockerfile 创建容器镜像。
- 容器管理:包括启动、停止、删除容器。
- 网络和存储:提供网络配置和数据卷支持。
- 编排:配合 Docker Compose 或 Kubernetes 实现多容器管理。
对比传统运行时:传统运行时(如 JVM、Node.js 运行时)只负责执行代码,Docker 更像一个“包装 + 运行”的综合平台。
3 Docker核心组建有哪些
Docker 的核心组件
-
Docker Engine
:Docker 的心脏,包含:
- Docker Daemon (dockerd):后台进程,管理镜像、容器、网络等。
- Docker CLI:命令行工具,用户与 Daemon 交互。
-
镜像 (Image):容器的静态模板,包含应用和依赖。
-
容器 (Container):运行时的实例,基于镜像启动。
-
Docker Hub:云端镜像仓库,类似代码的 GitHub。
4 Docker和虚拟机有什么区别?
Docker 是轻量级的沙盒,在其中运行的只是应用,虚拟机里面还有额外的系统。
虚拟机 (VM):通过 Hypervisor 模拟整个操作系统,包含内核,资源占用大(几 GB)。
Docker:共享宿主机的内核,只隔离应用和依赖,资源占用小(几 MB 到数百 MB),启动更快。
本质区别:VM 是“完整机器模拟”,Docker 是“进程级隔离”。
5 Docker的目标和解决的问题是什么?
Docker 是一种容器化平台,其本质是提供一个标准化、轻量级的打包和运行环境,解决“作品在我的电脑上好使,在你那不行”的问题。它的核心价值在于环境一致性和轻量化。
它既包括“运行时”(执行容器),也包括构建、部署和管理的工具链,不能简单等同于运行时。
6 Docker安全吗
Docker 利用了 Linux 内核中很多安全特性来保证不同容器之间的隔离,并且通
过签名机制来对镜像进行验证。大量生产环境的部署证明,Docker 虽然隔离性无法与
虚拟机相比,但仍然具有极高的安全性。
7 Docker本地的镜像文件都存放在哪里?
Docker 相关的本地资源都存放在/var/lib/docker/目录下,其中 container 目
录存放容器信息,graph 目录存放镜像信息,aufs 目录下存放具体的内容文件。