20250706-9-Docker快速入门(下)-Docker在线答疑_笔记
一、Kubernetes核心概念与集群搭建
1. 在线答疑
1)答疑Docker需要掌握到什么程度
- 学习目标:达到入门水平即可,重点掌握第一章Docker入门视频内容
- 学习建议:预习时间约3-4小时,建议吸收视频内容的80%
- 学习安排:可作为K8s学习的前置知识,实现平滑过渡
2)答疑镜像的封装概念
- 分层结构:镜像采用分层组合方式,基于UFS(联合文件系统)实现
- 空间优化:当多个镜像共享相同基础层时,仅存储差异部分
- 版本控制:通过分层机制实现类似版本控制的效果
- 建议:深入了解UFS系统工作原理可更好理解镜像封装机制
3)答疑docker私有仓库镜像删除
- 删除方式:不同镜像仓库系统删除方法不同
- Harbor示例:图形界面提供删除按钮
- 通用建议:参考具体镜像仓库系统的官方文档
4)答疑容器资源利用率监控
- 监控原则:
- 容器本质是应用的另一种部署方式
- 建议单个容器只运行一个应用程序
- 监控工具:
- 传统脚本监控方法仍然适用
- 推荐使用专用工具如cAdvisor
- Kubernetes中可使用metrics-server
- 优势:单应用容器部署可精确获取应用资源占用情况
5)答疑docker-compose作用
- 核心功能:单机批量管理容器
- 应用场景:
- 部署由多个容器组成的应用
- 实现一键部署/关闭/卸载等操作
- 限制:不具备集群管理能力
6)答疑docker容器互通
- 互通基础:容器间通信是必备功能
- 实现机制:
- 基于Linux虚拟网桥技术
- 容器启动后自动加入网桥
- 类似交换机二层网络通信
- 技术组件:结合网桥设备和veth pair实现
7)答疑打成镜像数量
- 镜像构建:支持任意层级的镜像构建
- 数量限制:镜像生成数量没有上限
- 构建示例:镜像A→容器B→镜像B的循环构建不受限制
8)答疑docker数据持久化应用场景
- 容器数据的临时性
- 数据丢失风险:容器是临时性的,当容器被删除时,容器内的数据(如MySQL数据)会随之丢失
- 生命周期特性:数据仅在容器运行且未被删除时存在,重建容器时无法保留原有数据
-
- 心目的:确保容器重建后仍能访问原有数据
- 实现方式:将容器数据持久化存储到宿主机,通过挂载卷(volume)实现数据持久化
- 数据持久化的实现方式
- 挂载机制:通过volume将容器内数据目录映射到宿主机特定路径
- 应用场景:数据库容器(如MySQL)、需要保存用户数据的应用等
9)答疑docker容器通信原理
- 底层实现:基于iptables的NAT规则实现容器间通信
- 外部访问容器:通过iptables的DNAT规则转发
- 容器访问外部:通过iptables的SNAT规则实现
- 网络组件:配合网桥(bridge)和veth设备对完成网络连接
10)答疑k8s指定端口方式
- Service机制:k8s通过Service生成随机端口,但可通过字段指定
- 配置方法:使用nodePort字段显式定义服务端口
- 与Docker区别:不同于Docker直接使用
−p-p−p
参数映射端口
11)答疑批量删除镜像
- 删除命令:使用docker命令手动删除无用镜像
- 卷处理:镜像删除不会自动清理关联卷,需单独执行卷清理命令
- 清理工具:Docker提供专用命令可清理系统无用资源
12)答疑HUB认证方式
- 证书生成:推荐使用openssl或cfssl工具生成自签名证书
- 实践建议:两种工具均可满足需求,cfssl操作更简便
13)答疑容器数量少上swarm还是k8s
- 技术选型:Docker Swarm已被官方弃用,不再维护
- 唯一选择:无论容器数量多少,都应选择k8s作为容器编排方案
14)答疑部署lnmp文件目录共享问题
- 必要性分析:Nginx需要处理静态文件,PHP需要处理动态脚本,两者必须共享同一程序目录
- 解决方案:除非将静态/动态文件物理分离,否则必须保持目录共享
- 典型场景:网站程序通常混合存放静态资源和PHP脚本文件
15)答疑数据库是否应放在容器中
- 适用场景:单实例数据库可部署在容器中
- 架构限制:主从复制等复杂架构不建议容器化部署
- 数据安全:必须配合持久化卷使用,避免数据丢失
二、知识小结
知识点 | 核心内容 | 易混淆点/考试重点 | 难度系数 |
Docker基础掌握程度 | 入门水平即可,需掌握80%的入门视频内容(约4小时) | 无需深入底层原理,重点理解基础操作和概念 | ⭐⭐ |
镜像封装原理 | 基于UFS联合文件系统分层构建,节省磁盘空间 | 镜像层共享机制(如A/B镜像的磁盘占用关系) | ⭐⭐⭐ |
容器监控 | 推荐单容器单应用部署,通过cAdvisor等工具监控资源 | 传统虚拟机监控与容器监控的差异 | ⭐⭐⭐ |
Docker Compose作用 | 单机批量管理容器,适用于多容器应用的一键部署/关闭 | 不支持集群管理,仅限单机场景 | ⭐⭐ |
容器网络互通 | 通过Linux网桥(类似交换机)和veth pair实现二层通信 | 与iptables NAT的区别(外部访问走DNAT) | ⭐⭐⭐⭐ |
数据持久化场景 | MySQL等有状态服务需挂载宿主机目录,防止容器删除数据丢失 | 容器临时存储与持久化卷的对比 | ⭐⭐⭐ |
K8s端口管理 | 通过Service的nodePort字段指定端口(非完全随机) | Docker直接映射端口(-p)与K8s Service的差异 | ⭐⭐⭐⭐ |
数据库容器化争议 | 单实例可容器化,集群架构需谨慎 | 数据安全性与容器 ephemeral 特性的矛盾 | ⭐⭐⭐⭐ |
LNMP目录共享 | Nginx与PHP需共享网站目录以同时处理静态/PHP文件 | 动态与静态资源未分离时的必要性 | ⭐⭐⭐ |
Swarm淘汰现状 | 官方已停止维护,仅选K8s | Swarm与K8s的适用场景对比(历史背景) | ⭐⭐ |