

文章目录
正文
1. 核心概念对比
1.1 技术架构差异
| 特性 | 虚拟化 | 容器化 |
|---|---|---|
| 隔离级别 | 硬件级 | 进程级 |
| 启动速度 | 秒级(1-30s) | 毫秒级(50-500ms) |
| 性能损耗 | 5-15% | 1-3% |
| 镜像大小 | GB级(完整OS) | MB级(应用+依赖) |
| 典型代表 | KVM, VMware | Docker, Podman |
1.2 应用场景分析
2. KVM虚拟化实战
2.1 环境搭建
# Ubuntu安装
sudo apt install qemu-kvm libvirt-daemon-system virtinst bridge-utils
# CentOS安装
sudo yum install @virtualization
sudo systemctl start libvirtd
# 验证安装
virsh list --all
2.2 虚拟机生命周期管理
# 创建虚拟机
virt-install \
--name centos8 \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/centos8.qcow2,size=20 \
--os-type linux \
--os-variant centos-stream8 \
--network bridge=virbr0 \
--graphics none \
--console pty,target_type=serial \
--location http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/
# 常用命令
virsh start centos8 # 启动
virsh shutdown centos8 # 关闭
virsh destroy centos8 # 强制停止
virsh edit centos8 # 编辑配置
3. Docker容器技术
3.1 容器引擎安装
# Docker CE安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 非root用户权限
sudo usermod -aG docker $USER
# 验证安装
docker run hello-world
3.2 容器操作示例
# 运行Nginx容器
docker run -d -p 80:80 --name web nginx:alpine
# 构建自定义镜像
mkdir myapp && cd myapp
echo "FROM alpine:3.14" > Dockerfile
echo 'CMD echo "Hello Container!"' >> Dockerfile
docker build -t myapp:v1 .
# 容器管理命令
docker ps -a # 查看容器
docker exec -it web sh # 进入容器
docker logs web # 查看日志
4. Kubernetes基础
4.1 单节点集群部署
# Minikube安装
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 启动集群
minikube start --driver=docker
# 部署示例应用
kubectl create deployment nginx --image=nginx:alpine
kubectl expose deployment nginx --port=80 --type=NodePort
4.2 核心概念图解
5. 网络与存储配置
5.1 容器网络模型
| 模式 | 描述 | 典型实现 |
|---|---|---|
| Host | 共享宿主机网络栈 | docker run --net=host |
| Bridge | 默认虚拟网桥 | docker0 |
| Overlay | 跨主机容器通信 | Flannel, Calico |
| Macvlan | 直接分配MAC地址 | 物理网络集成 |
5.2 存储卷管理
# Docker持久化存储
docker run -v /host/path:/container/path nginx
# Kubernetes持久卷
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
6. 安全与权限控制
6.1 容器安全加固
# 非root用户运行
docker run -u 1001 myapp
# 只读文件系统
docker run --read-only -v /tmp:/tmp:rw alpine
# 能力限制
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx
6.2 SELinux策略
# 容器标签配置
docker run -v /host:/container:Z redis
# 查看上下文
ls -Z /var/lib/docker
7. 性能优化技巧
7.1 资源限制配置
# Docker限制示例
docker run -d --memory="512m" --cpus="1.5" nginx
# Kubernetes资源请求
apiVersion: apps/v1
kind: Deployment
spec:
containers:
- name: app
resources:
limits:
cpu: "1"
memory: 512Mi
requests:
cpu: "0.5"
memory: 256Mi
7.2 性能监控工具
# cAdvisor安装
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
8. 常见问题处理
8.1 故障排查表
| 现象 | 解决方案 |
|---|---|
| 容器无法连接网络 | 检查防火墙规则和网络模式 |
| 镜像拉取失败 | 配置镜像加速器或代理 |
| 存储卷权限问题 | 使用:Z或:z卷标签 |
| Kubernetes Pod处于Pending状态 | 查看事件日志kubectl describe pod |
8.2 日志分析方法
# Docker日志查看
docker logs --tail 100 -f container_name
# Kubernetes日志收集
kubectl logs -l app=nginx --tail=50
9. 学习路径推荐
- 掌握Dockerfile最佳实践
- 学习Kubernetes核心概念(Pod/Deployment/Service)
- 研究Service Mesh(Istio/Linkerd)
- 实践容器监控(Prometheus+Grafana)
- 探索Serverless架构(Knative/OpenFaaS)
结语
感谢您的阅读!期待您的一键三连!欢迎指正!

3103

被折叠的 条评论
为什么被折叠?



