个人主页:Guiat 归属专栏:Linux
正文
1. 核心概念对比
1.1 技术架构差异
特性 虚拟化 容器化 隔离级别 硬件级 进程级 启动速度 秒级(1-30s) 毫秒级(50-500ms) 性能损耗 5-15% 1-3% 镜像大小 GB级(完整OS) MB级(应用+依赖) 典型代表 KVM, VMware Docker, Podman
1.2 应用场景分析
45%
35%
15%
5%
技术选型场景
传统应用迁移
微服务架构
CI/CD流水线
开发测试环境
2. KVM虚拟化实战
2.1 环境搭建
sudo apt install qemu-kvm libvirt-daemon-system virtinst bridge-utils
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 容器引擎安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
sudo usermod -aG docker $USER
docker run hello-world
3.2 容器操作示例
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 单节点集群部署
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 核心概念图解
Pod
Deployment
Service
Node
Ingress
5. 网络与存储配置
5.1 容器网络模型
模式 描述 典型实现 Host 共享宿主机网络栈 docker run --net=host Bridge 默认虚拟网桥 docker0 Overlay 跨主机容器通信 Flannel, Calico Macvlan 直接分配MAC地址 物理网络集成
5.2 存储卷管理
docker run -v /host/path:/container/path nginx
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
6. 安全与权限控制
6.1 容器安全加固
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 run -d --memory = "512m" --cpus = "1.5" nginx
apiVersion: apps/v1
kind: Deployment
spec:
containers:
- name: app
resources:
limits:
cpu: "1"
memory: 512Mi
requests:
cpu: "0.5"
memory: 256Mi
7.2 性能监控工具
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 logs --tail 100 -f container_name
kubectl logs -l app = nginx --tail = 50
9. 学习路径推荐
掌握Dockerfile最佳实践 学习Kubernetes核心概念(Pod/Deployment/Service) 研究Service Mesh(Istio/Linkerd) 实践容器监控(Prometheus+Grafana) 探索Serverless架构(Knative/OpenFaaS)
结语 感谢您的阅读!期待您的一键三连!欢迎指正!