1. Docker 简介
- Docker 是一种容器技术,将应用及其依赖打包成容器,便于跨平台部署与运行。
- Docker 容器共享宿主机的操作系统内核,资源开销小,启动速度快。
2. Docker 在不同平台上的运行原理
- 在 Linux 上,Docker 容器直接共享宿主机的 Linux 内核。
- 在 Mac/Windows 上,Docker 通过虚拟机(如 HyperKit)间接提供 Linux 内核,容器实际上运行在这个虚拟机中。
3. Docker 容器内的应用安装与目录结构
- 容器内应用安装方式与原生操作系统一致(如 CentOS 用 yum/dnf/rpm)。
- 目录结构基本与原生系统一致,但容器镜像通常较精简,服务和文件较少。
- 推荐用 Dockerfile 构建定制镜像以实现自动化部署。
4. 判断云服务器实例类型
- 云服务商售卖的实例通常是虚拟机(如 KVM/Xen),不是 Docker 容器。
- 可以通过
/.dockerenv 文件、/proc/1/cgroup、dmidecode、/proc/cpuinfo 等命令判断实例类型。 - 容器服务(如 ACK、TKE、CCE)才会用 Docker 技术。
5. Kubernetes(K8s)与 Docker 的关系
- Docker 负责容器打包和运行,K8s 负责容器的集群调度和管理。
- K8s 早期直接用 Docker 作为容器运行时,后期转向 containerd、CRI-O 等更轻量的运行时,但依然兼容 Docker 镜像。
6. 虚拟机与 Docker 容器的区别
| 方面 | 虚拟机(VM) | Docker 容器 |
|---|
| 隔离性 | 强(完整操作系统) | 进程级,较弱 |
| 资源占用 | 高 | 低 |
| 启动速度 | 慢(分钟级) | 快(秒级) |
| 适用场景 | 传统应用、跨系统 | 微服务、云原生 |
| 灵活性 | 低 | 高 |
7. 总结建议
- 虚拟机适合需要高度隔离、安全性高、跨操作系统的场景。
- Docker 容器适合弹性伸缩、快速部署、微服务、持续集成等现代云原生场景。
- K8s是容器集群编排平台,负责容器的自动化管理和调度。
- 云主机一般是虚拟机,容器服务才用 Docker 技术。