LXD 进阶概念

系统级容器的运行机制、架构原理以及常见配置难点解析。

🐳 Docker 应用进程封装
无完整 Systemd
LXD / LXC 完整 Ubuntu OS
可 SSH, 可 Apt
系统级容器
Full OS Container
KVM / VM 硬件完全模拟
独占内核
资源开销大
核心原理

共享内核架构

LXD 容器与虚拟机最大的区别在于它没有 Hypervisor 层。 容器内的进程直接调用宿主机的 Kernel Syscalls。

CPU
MEM/DISK
NIC
Physical Hardware
Host Linux Kernel (Shared)
Ubuntu C1
/bin/bash
systemd
ssh
Alpine C2
/bin/sh
init
apk
隔离技术

Namespaces & Cgroups

利用 Linux 内核特性实现的资源隔离。Namespaces 负责"视图隔离"(看不见),Cgroups 负责"资源限制"(摸不着)。

HOST SYSTEM
LXD Container
PID NS
进程隔离
Container PID 1
Net NS
网络隔离
独立 IP/MAC
Mount NS
文件系统隔离
独立的挂载点
Cgroups
资源配额
Max RAM/CPU
难点一

UID/GID 映射

这是新手遇到 `Permission Denied` 最常见的原因。LXD 默认使用非特权容器,宿主机上的 Root 和容器内的 Root 不是同一个用户。

模拟设置

Container
root
UID 0
Process Calls
Namespace 映射
Host Kernel
user
UID 100000
安全模式:ID 映射生效 容器内的 Root (0) 在宿主机看来只是普通用户 (100000)。即使逃逸也无法破坏系统核心文件。
难点二

网络模式:NAT vs Bridge

容器如何与外网通信?默认的 lxdbr0 和物理桥接有什么区别?

Internet
eth0
Host
192.168.1.10
NAT (lxdbr0)
Container 10.0.0.x