Unterschied LXC zu VM

Aus Xinux Wiki
Version vom 12. Februar 2026, 09:00 Uhr von Maximilian.pottgiesser (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „<pre> # LXC Container Architektur – Userspace, Namespaces & Kernel ``` ╔═══════════════════════════…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
# LXC Container Architektur – Userspace, Namespaces & Kernel

```
╔══════════════════════════════════════════════════════════════════════════════╗
║                              USERSPACE                                     ║
║                                                                            ║
║  ┌─── Container A ──────────────┐    ┌─── Container B ──────────────┐      ║
║  │                              │    │                              │      ║
║  │  ┌────────────────────────┐  │    │  ┌────────────────────────┐  │      ║
║  │  │ Anwendungen & Dienste  │  │    │  │ Anwendungen & Dienste  │  │      ║
║  │  │ Apache, SSH, DB, ...   │  │    │  │ Pi-hole, Nginx, ...    │  │      ║
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │      ║
║  │  │ Systembibliotheken     │  │    │  │ Systembibliotheken     │  │      ║
║  │  │ glibc, openssl, ...    │  │    │  │ glibc, openssl, ...    │  │      ║
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │      ║
║  │  │ Paketverwaltung        │  │    │  │ Paketverwaltung        │  │      ║
║  │  │ apt, dpkg              │  │    │  │ apt, dpkg              │  │      ║
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │      ║
║  │  │ Init-System (systemd)  │  │    │  │ Init-System (systemd)  │  │      ║
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │      ║
║  │  │ Root-Dateisystem       │  │    │  │ Root-Dateisystem       │  │      ║
║  │  │ /bin /etc /usr /var    │  │    │  │ /bin /etc /usr /var    │  │      ║
║  │  └────────────────────────┘  │    │  └────────────────────────┘  │      ║
║  │                              │    │                              │      ║
║  │  Eigene User, Hostname,     │    │  Eigene User, Hostname,     │      ║
║  │  IP-Adresse, Prozesse       │    │  IP-Adresse, Prozesse       │      ║
║  └──────────────┬───────────────┘    └──────────────┬───────────────┘      ║
║                 │                                   │                      ║
╠═════════════════╪═══════════════════════════════════╪══════════════════════╣
║                 │         NAMESPACES & CGROUPS      │                      ║
║                 │     (Isolation & Begrenzung)      │                      ║
║                 ▼                                   ▼                      ║
║  ┌─── Namespaces CT-A ─────────┐    ┌─── Namespaces CT-B ─────────┐      ║
║  │                              │    │                              │      ║
║  │  PID    → Eigene Prozesse    │    │  PID    → Eigene Prozesse    │      ║
║  │  NET    → Eigenes Netzwerk   │    │  NET    → Eigenes Netzwerk   │      ║
║  │  MNT    → Eigenes Dateisys.  │    │  MNT    → Eigenes Dateisys.  │      ║
║  │  USER   → Eigene User/Root   │    │  USER   → Eigene User/Root   │      ║
║  │  UTS    → Eigener Hostname   │    │  UTS    → Eigener Hostname   │      ║
║  │  IPC    → Eigene IPC-Kanäle  │    │  IPC    → Eigene IPC-Kanäle  │      ║
║  │                              │    │                              │      ║
║  ├──────────────────────────────┤    ├──────────────────────────────┤      ║
║  │  cgroup: max 2 CPU, 2GB RAM │    │  cgroup: max 1 CPU, 1GB RAM │      ║
║  └──────────────┬───────────────┘    └──────────────┬───────────────┘      ║
║                 │                                   │                      ║
║                 │    Namespaces = Was sieht er?      │                      ║
║                 │    cgroups   = Wieviel darf er?    │                      ║
║                 │                                   │                      ║
╠═════════════════╪═══════════════════════════════════╪══════════════════════╣
║                 │                                   │                      ║
║                 ▼                                   ▼                      ║
║  ┌──────────────────────────────────────────────────────────────────┐      ║
║  │                     GEMEINSAMER KERNEL                          │      ║
║  │                     (z.B. Linux 6.1)                            │      ║
║  │                                                                  │      ║
║  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────────┐  │      ║
║  │  │ Prozess- │ │Speicher- │ │Netzwerk- │ │  Dateisystem-     │  │      ║
║  │  │scheduler │ │verwaltung│ │  Stack   │ │  treiber          │  │      ║
║  │  └──────────┘ └──────────┘ └──────────┘ └───────────────────┘  │      ║
║  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────────┐  │      ║
║  │  │  I/O-    │ │ Geräte-  │ │Sicherheit│ │  Kernel-Module    │  │      ║
║  │  │scheduler │ │ treiber  │ │ (SELinux)│ │  (z.B. ZFS)       │  │      ║
║  │  └──────────┘ └──────────┘ └──────────┘ └───────────────────┘  │      ║
║  └──────────────────────────────────────────────────────────────────┘      ║
║                                                                            ║
╠════════════════════════════════════════════════════════════════════════════╣
║                                                                            ║
║  ┌──────────────────────────────────────────────────────────────────┐      ║
║  │                        HARDWARE                                  │      ║
║  │          CPU    │    RAM    │    NIC    │    Disk                 │      ║
║  └──────────────────────────────────────────────────────────────────┘      ║
║                                                                            ║
╚════════════════════════════════════════════════════════════════════════════╝


Leserichtung:  ↑ Userspace (Was der Container "besitzt")
               ↑ Namespaces/cgroups (Was ihn isoliert & begrenzt)
               ↑ Kernel (Was er sich teilt)
               ↑ Hardware (Was tatsächlich existiert)


Zum Vergleich – VM-Architektur:

╔════════════════════════════════════════════════════════════════════════════╗
║                                                                            ║
║  ┌─── VM A ─────────────────────┐    ┌─── VM B ─────────────────────┐     ║
║  │  Anwendungen & Dienste       │    │  Anwendungen & Dienste       │     ║
║  │  Systembibliotheken          │    │  Systembibliotheken          │     ║
║  │  Init-System                 │    │  Init-System                 │     ║
║  │  Root-Dateisystem            │    │  Root-Dateisystem            │     ║
║  │  ┌────────────────────────┐  │    │  ┌────────────────────────┐  │     ║
║  │  │ ██ EIGENER KERNEL ██  │  │    │  │ ██ EIGENER KERNEL ██  │  │     ║
║  │  └────────────────────────┘  │    │  └────────────────────────┘  │     ║
║  │  ┌────────────────────────┐  │    │  ┌────────────────────────┐  │     ║
║  │  │ Emulierte Hardware     │  │    │  │ Emulierte Hardware     │  │     ║
║  │  │ vCPU, vRAM, vNIC,vDisk│  │    │  │ vCPU, vRAM, vNIC,vDisk│  │     ║
║  │  └────────────────────────┘  │    │  └────────────────────────┘  │     ║
║  └──────────────┬───────────────┘    └──────────────┬───────────────┘     ║
║                 │                                   │                      ║
║  ┌──────────────┴───────────────────────────────────┴───────────────┐     ║
║  │                     HYPERVISOR (z.B. KVM/QEMU)                   │     ║
║  ├──────────────────────────────────────────────────────────────────┤     ║
║  │                     HOST-KERNEL                                  │     ║
║  ├──────────────────────────────────────────────────────────────────┤     ║
║  │                     HARDWARE                                     │     ║
║  └──────────────────────────────────────────────────────────────────┘     ║
║                                                                            ║
║  Jede VM hat einen EIGENEN Kernel + emulierte Hardware                    ║
║  → Mehr Overhead, aber vollständige Isolation                             ║
║  → Verschiedene Betriebssysteme möglich (Linux, Windows, BSD)             ║
║                                                                            ║
╚════════════════════════════════════════════════════════════════════════════╝
```