CentOS 8 中部署 LXC 容器:轻量级虚拟化与容器网络配置(附 Docker 对比)

1. LXC 核心概念
  • 轻量级虚拟化:基于内核的 cgroups 和 namespaces 技术,提供操作系统级虚拟化
  • 资源效率:共享主机内核,资源开销低于传统虚拟机
  • 核心组件
    • liblxc:底层库
    • lxc-* 工具集
    • 模板系统(如 ubuntucentos
2. CentOS 8 部署步骤
2.1 环境准备
# 启用 EPEL 仓库
sudo dnf install epel-release -y

# 安装基础依赖
sudo dnf install @virt debootstrap bridge-utils -y

2.2 安装 LXC
# 安装核心组件
sudo dnf install lxc lxc-templates lxc-libs -y

# 验证安装
lxc-checkconfig

2.3 创建容器
# 创建 Ubuntu 容器
sudo lxc-create -n mycontainer -t ubuntu

# 启动容器
sudo lxc-start -n mycontainer

3. 网络配置详解
3.1 网络拓扑
graph LR
A[物理网卡] --> B[Linux 网桥]
B --> C[容器 veth0]
B --> D[主机通信]

3.2 配置桥接网络
# 创建网桥
sudo nmcli con add type bridge con-name br0 ifname br0

# 绑定物理接口
sudo nmcli con add type bridge-slave con-name br0-port ifname enp0s3 master br0

# 应用配置
sudo nmcli con up br0

3.3 容器网络配置

编辑容器配置文件 /var/lib/lxc/mycontainer/config

# 网络配置段
lxc.net.0.type = veth
lxc.net.0.link = br0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx

4. LXC 与 Docker 对比
特性LXCDocker
虚拟化层级操作系统级应用级
启动速度秒级($$ t \approx 1\text{s} $$)毫秒级($$ t \ll 1\text{s} $$)
资源隔离完整进程/文件系统隔离进程级隔离
典型用例系统容器(运行完整 OS)应用容器(微服务)
镜像管理模板系统分层镜像仓库
网络配置需手动配置桥接/NAT自动 SDN(overlay 网络)
存储卷绑定挂载命名卷/绑定挂载
5. 关键操作命令
# 监控容器状态
lxc-ls -f

# 进入容器控制台
lxc-console -n mycontainer

# 动态资源限制(限制 CPU 为 50%)
lxc-cgroup -n mycontainer cpuset.cpus "0-1"
lxc-cgroup -n mycontainer cpu.shares 512

6. 故障排查
  • 网络不通
    1. 检查 iptables 规则:sudo iptables -L -n -v
    2. 验证网桥绑定:brctl show
  • 启动失败
    • 查看日志:tail -f /var/log/lxc/mycontainer.log
    • 检查内核支持:grep CONFIG_CGROUP /boot/config-$(uname -r)

注意:CentOS 8 已停止维护,建议迁移至 CentOS Stream 或 Rocky Linux 以获得持续安全更新。实际部署时需结合 SELinux 策略(setenforce 0 可临时禁用)。

此方案实现了基于 LXC 的轻量级虚拟化环境,适用于需要完整 Linux 环境的场景,与 Docker 形成互补技术栈。

更多推荐