【Linux】虚拟化与容器

在这里插入图片描述

个人主页:Guiat
归属专栏:Linux

在这里插入图片描述

正文

1. 核心概念对比

1.1 技术架构差异

特性虚拟化容器化
隔离级别硬件级进程级
启动速度秒级(1-30s)毫秒级(50-500ms)
性能损耗5-15%1-3%
镜像大小GB级(完整OS)MB级(应用+依赖)
典型代表KVM, VMwareDocker, Podman

1.2 应用场景分析

45% 35% 15% 5% 技术选型场景 传统应用迁移 微服务架构 CI/CD流水线 开发测试环境

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 核心概念图解

Pod
Deployment
Service
Node
Ingress

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. 学习路径推荐

  1. 掌握Dockerfile最佳实践
  2. 学习Kubernetes核心概念(Pod/Deployment/Service)
  3. 研究Service Mesh(Istio/Linkerd)
  4. 实践容器监控(Prometheus+Grafana)
  5. 探索Serverless架构(Knative/OpenFaaS)

结语
感谢您的阅读!期待您的一键三连!欢迎指正!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Guiat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值