001-Docker基础复习

一、基础概念类

  1. Docker 是什么?与虚拟机有何本质区别?

    • 详解:Docker 是基于容器的轻量级虚拟化技术,通过共享宿主机内核实现进程级隔离。相比虚拟机(需完整操作系统,资源占用大),Docker 启动更快(秒级)、资源占用更低(镜像仅 MB 级),但隔离性较弱(依赖 Linux Namespace/CGroups)。
    • 参考Docker 与虚拟机区别详解
  2. Docker 三大核心组件及其关系?

    • 详解
      • 镜像(Image):只读模板(如 nginx:alpine),含应用环境与代码。
      • 容器(Container):镜像的运行实例,含可写层。
      • 仓库(Registry):存储镜像的平台(如 Docker Hub)。
      • 关系:仓库 → 下载镜像 → 创建容器 。
    • 参考三大核心解析
  3. 为何使用 Docker?核心优势是什么?

    • 详解
      • 环境一致性:镜像打包应用+依赖,避免“开发-生产环境差异”。
      • 资源高效:容器共享内核,资源利用率比虚拟机高 70%+。
      • 快速部署:秒级启动,支持 CI/CD 流水线。
    • 参考Docker 核心优势分析

二、核心操作类

  1. Dockerfile 中 COPYADD 指令的区别?

    • 详解
      • COPY:仅复制文件/目录到镜像(如 COPY app.py /app)。
      • ADD:额外支持自动解压压缩包、从 URL 下载(不推荐,需手动清理缓存)。
    • 参考Dockerfile 指令详解
  2. 如何持久化容器数据?

    • 详解
      • 数据卷(Volume)docker run -v /host/path:/container/path,数据存于宿主机,容器重启不丢失。
      • 数据卷容器:专用容器管理卷,供其他容器挂载 。
    • 参考数据存储管理
  3. 容器常见状态及转换命令?

    • 状态createdrunningpaused/exiteddead
    • 命令
      1
      docker start/stop/pause/unpause/rm <container_id>

三、网络与存储

  1. Docker 网络模式有哪些?适用场景?

    模式 特点 场景
    bridge (默认) 容器通过 docker0 网桥通信 多容器隔离环境(如 Web 应用)
    host 共享宿主机网络栈 高性能场景(如负载测试)
    overlay 跨主机容器通信(Swarm/K8s) 集群部署
  2. 如何实现跨主机容器通信?

    • 详解
      • Overlay 网络:基于 VXLAN 封装数据包,通过 UDP 传输(端口 4789)。
      • Macvlan:为容器分配独立 MAC 地址,直连物理网络 。

四、容器编排与集群

  1. Docker Compose vs Docker Swarm vs Kubernetes?

    • 对比
      工具 定位 适用场景
      Docker Compose 单机多容器编排 本地开发环境
      Docker Swarm 轻量级集群管理 中小规模生产部署
      Kubernetes 企业级容器编排 大规模微服务架构
    • 参考编排工具对比
  2. 如何用 Docker Compose 定义服务依赖?

    • 示例
      1
      2
      3
      4
      5
      6
      services:
      web:
      depends_on:
      - db # 确保 db 先启动
      db:
      image: postgres
    • 参考Compose 文件规范

五、实战调优与排错

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

    • 技巧
      • 多阶段构建(移除编译依赖)。
      • 使用 Alpine 等轻量基础镜像。
      • 合并 RUN 指令减少镜像层 。
  2. 查看容器日志的方法?

    • 命令
      1
      2
      docker logs -f <container_id>  # 实时日志
      docker inspect --format='{{.LogPath}}' <container_id> # 日志文件路径
    • 参考日志管理

六、高阶原理

  1. Docker 如何实现资源隔离?

    • 技术栈
      • Namespace:隔离进程、网络、文件系统等(如 PIDNET)。
      • CGroups:限制 CPU/内存用量(如 docker run --cpus=2 --memory=1g)。
  2. 容器退出后数据会丢失吗?

    • 详解:默认停止的容器仍保留可写层(docker ps -a 可见),但删除容器后数据丢失,需用数据卷持久化 。

附:完整学习资源