Unterschied LXC zu VM: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „<pre> # LXC Container Architektur – Userspace, Namespaces & Kernel ``` ╔═══════════════════════════…“)
 
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 4: Zeile 4:
 
```
 
```
 
╔══════════════════════════════════════════════════════════════════════════════╗
 
╔══════════════════════════════════════════════════════════════════════════════╗
−
║                              USERSPACE                                     ║
+
║                              USERSPACE                                       ║
−
║                                                                           ║
+
║                                                                             ║
−
║  ┌─── Container A ──────────────┐    ┌─── Container B ──────────────┐     ║
+
║  ┌─── Container A ──────────────┐    ┌─── Container B ──────────────┐       ║
−
║  │                              │    │                              │     ║
+
║  │                              │    │                              │       ║
−
║  │  ┌────────────────────────┐  │    │  ┌────────────────────────┐  │     ║
+
║  │  ┌────────────────────────┐  │    │  ┌────────────────────────┐  │       ║
−
║  │  │ Anwendungen & Dienste  │  │    │  │ Anwendungen & Dienste  │  │     ║
+
║  │  │ Anwendungen & Dienste  │  │    │  │ Anwendungen & Dienste  │  │       ║
−
║  │  │ Apache, SSH, DB, ...  │  │    │  │ Pi-hole, Nginx, ...    │  │     ║
+
║  │  │ Apache, SSH, DB, ...  │  │    │  │ Pi-hole, Nginx, ...    │  │       ║
−
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │     ║
+
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │       ║
−
║  │  │ Systembibliotheken    │  │    │  │ Systembibliotheken    │  │     ║
+
║  │  │ Systembibliotheken    │  │    │  │ Systembibliotheken    │  │       ║
−
║  │  │ glibc, openssl, ...    │  │    │  │ glibc, openssl, ...    │  │     ║
+
║  │  │ glibc, openssl, ...    │  │    │  │ glibc, openssl, ...    │  │       ║
−
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │     ║
+
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │       ║
−
║  │  │ Paketverwaltung        │  │    │  │ Paketverwaltung        │  │     ║
+
║  │  │ Paketverwaltung        │  │    │  │ Paketverwaltung        │  │       ║
−
║  │  │ apt, dpkg              │  │    │  │ apt, dpkg              │  │     ║
+
║  │  │ apt, dpkg              │  │    │  │ apt, dpkg              │  │       ║
−
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │     ║
+
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │       ║
−
║  │  │ Init-System (systemd)  │  │    │  │ Init-System (systemd)  │  │     ║
+
║  │  │ Init-System (systemd)  │  │    │  │ Init-System (systemd)  │  │       ║
−
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │     ║
+
║  │  ├────────────────────────┤  │    │  ├────────────────────────┤  │       ║
−
║  │  │ Root-Dateisystem      │  │    │  │ Root-Dateisystem      │  │     ║
+
║  │  │ Root-Dateisystem      │  │    │  │ Root-Dateisystem      │  │       ║
−
║  │  │ /bin /etc /usr /var    │  │    │  │ /bin /etc /usr /var    │  │     ║
+
║  │  │ /bin /etc /usr /var    │  │    │  │ /bin /etc /usr /var    │  │       ║
−
║  │  └────────────────────────┘  │    │  └────────────────────────┘  │     ║
+
║  │  └────────────────────────┘  │    │  └────────────────────────┘  │       ║
−
║  │                              │    │                              │     ║
+
║  │                              │    │                              │       ║
−
║  │  Eigene User, Hostname,     │    │  Eigene User, Hostname,     │     ║
+
║  │  Eigene User, Hostname,     │    │  Eigene User, Hostname,     │       ║
−
║  │  IP-Adresse, Prozesse       │    │  IP-Adresse, Prozesse       │     ║
+
║  │  IP-Adresse, Prozesse       │    │  IP-Adresse, Prozesse       │       ║
−
║  └──────────────┬───────────────┘    └──────────────┬───────────────┘     ║
+
║  └──────────────┬───────────────┘    └──────────────┬───────────────┘       ║
−
║                │                                  │                     ║
+
║                │                                  │                       ║
−
╠═════════════════╪═══════════════════════════════════╪══════════════════════╣
+
╠═════════════════╪═══════════════════════════════════╪════════════════════════╣
−
║                │        NAMESPACES & CGROUPS      │                     ║
+
║                │        NAMESPACES & CGROUPS      │                       ║
−
║                │    (Isolation & Begrenzung)      │                     ║
+
║                │    (Isolation & Begrenzung)      │                       ║
−
║                ▼                                  ▼                     ║
+
║                ▼                                  ▼                       ║
−
║  ┌─── Namespaces CT-A ─────────┐   ┌─── Namespaces CT-B ─────────┐      ║
+
║  ┌─── Namespaces CT-A ──────────┐   ┌─── Namespaces CT-B ──────────┐        ║
−
║  │                              │    │                              │     ║
+
║  │                              │    │                              │       ║
−
║  │  PID    → Eigene Prozesse    │    │  PID    → Eigene Prozesse    │     ║
+
║  │  PID    → Eigene Prozesse    │    │  PID    → Eigene Prozesse    │       ║
−
║  │  NET    → Eigenes Netzwerk  │    │  NET    → Eigenes Netzwerk  │     ║
+
║  │  NET    → Eigenes Netzwerk  │    │  NET    → Eigenes Netzwerk  │       ║
−
║  │  MNT    → Eigenes Dateisys.  │    │  MNT    → Eigenes Dateisys.  │     ║
+
║  │  MNT    → Eigenes Dateisys.  │    │  MNT    → Eigenes Dateisys.  │       ║
−
║  │  USER  → Eigene User/Root  │    │  USER  → Eigene User/Root  │     ║
+
║  │  USER  → Eigene User/Root  │    │  USER  → Eigene User/Root  │       ║
−
║  │  UTS    → Eigener Hostname  │    │  UTS    → Eigener Hostname  │     ║
+
║  │  UTS    → Eigener Hostname  │    │  UTS    → Eigener Hostname  │       ║
−
║  │  IPC    → Eigene IPC-Kanäle  │    │  IPC    → Eigene IPC-Kanäle  │     ║
+
║  │  IPC    → Eigene IPC-Kanäle  │    │  IPC    → Eigene IPC-Kanäle  │       ║
−
║  │                              │    │                              │     ║
+
║  │                              │    │                              │       ║
−
║  ├──────────────────────────────┤    ├──────────────────────────────┤     ║
+
║  ├──────────────────────────────┤    ├──────────────────────────────┤       ║
−
║  │  cgroup: max 2 CPU, 2GB RAM │    │  cgroup: max 1 CPU, 1GB RAM │     ║
+
║  │  cgroup: max 2 CPU, 2GB RAM │    │  cgroup: max 1 CPU, 1GB RAM │       ║
−
║  └──────────────┬───────────────┘    └──────────────┬───────────────┘     ║
+
║  └──────────────┬───────────────┘    └──────────────┬───────────────┘       ║
−
║                │                                  │                     ║
+
║                │                                  │                       ║
−
║                │    Namespaces = Was sieht er?     │                     ║
+
║                │    Namespaces = Was sieht er?     │                       ║
−
║                │    cgroups  = Wieviel darf er?   │                     ║
+
║                │    cgroups  = Wieviel darf er?   │                       ║
−
║                │                                  │                     ║
+
║                │                                  │                       ║
 
╠═════════════════╪═══════════════════════════════════╪══════════════════════╣
 
╠═════════════════╪═══════════════════════════════════╪══════════════════════╣
 
║                │                                  │                      ║
 
║                │                                  │                      ║
 
║                ▼                                  ▼                      ║
 
║                ▼                                  ▼                      ║
 
║  ┌──────────────────────────────────────────────────────────────────┐      ║
 
║  ┌──────────────────────────────────────────────────────────────────┐      ║
−
║  │                    GEMEINSAMER KERNEL                         │      ║
+
║  │                    GEMEINSAMER KERNEL                           │      ║
−
║  │                    (z.B. Linux 6.1)                           │      ║
+
║  │                    (z.B. Linux 6.1)                             │      ║
 
║  │                                                                  │      ║
 
║  │                                                                  │      ║
−
║  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────────┐ │      ║
+
║  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────────┐   │      ║
−
║  │  │ Prozess- │ │Speicher- │ │Netzwerk- │ │  Dateisystem-    │ │      ║
+
║  │  │ Prozess- │ │Speicher- │ │Netzwerk- │ │  Dateisystem-    │   │      ║
−
║  │  │scheduler │ │verwaltung│ │  Stack  │ │  treiber          │ │      ║
+
║  │  │scheduler │ │verwaltung│ │  Stack  │ │  treiber          │   │      ║
−
║  │  └──────────┘ └──────────┘ └──────────┘ └───────────────────┘ │      ║
+
║  │  └──────────┘ └──────────┘ └──────────┘ └───────────────────┘   │      ║
−
║  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────────┐ │      ║
+
║  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────────┐   │      ║
−
║  │  │  I/O-    │ │ Geräte-  │ │Sicherheit│ │  Kernel-Module    │ │      ║
+
║  │  │  I/O-    │ │ Geräte-  │ │Sicherheit│ │  Kernel-Module    │   │      ║
−
║  │  │scheduler │ │ treiber  │ │ (SELinux)│ │  (z.B. ZFS)      │ │      ║
+
║  │  │scheduler │ │ treiber  │ │ (SELinux)│ │  (z.B. ZFS)      │   │      ║
−
║  │  └──────────┘ └──────────┘ └──────────┘ └───────────────────┘ │      ║
+
║  │  └──────────┘ └──────────┘ └──────────┘ └───────────────────┘   │      ║
 
║  └──────────────────────────────────────────────────────────────────┘      ║
 
║  └──────────────────────────────────────────────────────────────────┘      ║
 
║                                                                            ║
 
║                                                                            ║
Zeile 69: Zeile 69:
 
║  ┌──────────────────────────────────────────────────────────────────┐      ║
 
║  ┌──────────────────────────────────────────────────────────────────┐      ║
 
║  │                        HARDWARE                                  │      ║
 
║  │                        HARDWARE                                  │      ║
−
║  │          CPU    │    RAM    │    NIC    │    Disk                 │      ║
+
║  │          CPU    │    RAM    │    NIC    │    Disk               │      ║
 
║  └──────────────────────────────────────────────────────────────────┘      ║
 
║  └──────────────────────────────────────────────────────────────────┘      ║
 
║                                                                            ║
 
║                                                                            ║
Zeile 85: Zeile 85:
 
╔════════════════════════════════════════════════════════════════════════════╗
 
╔════════════════════════════════════════════════════════════════════════════╗
 
║                                                                            ║
 
║                                                                            ║
−
║  ┌─── VM A ─────────────────────┐    ┌─── VM B ─────────────────────┐     ║
+
║  ┌─── VM A ─────────────────────┐    ┌─── VM B ─────────────────────┐     ║
−
║  │  Anwendungen & Dienste      │    │  Anwendungen & Dienste      │     ║
+
║  │  Anwendungen & Dienste      │    │  Anwendungen & Dienste      │     ║
−
║  │  Systembibliotheken          │    │  Systembibliotheken          │     ║
+
║  │  Systembibliotheken          │    │  Systembibliotheken          │     ║
−
║  │  Init-System                │    │  Init-System                │     ║
+
║  │  Init-System                │    │  Init-System                │     ║
−
║  │  Root-Dateisystem            │    │  Root-Dateisystem            │     ║
+
║  │  Root-Dateisystem            │    │  Root-Dateisystem            │     ║
−
║  │  ┌────────────────────────┐  │    │  ┌────────────────────────┐  │     ║
+
║  │  ┌────────────────────────┐  │    │  ┌────────────────────────┐  │     ║
−
║  │  │ ██ EIGENER KERNEL ██ │  │    │  │ ██ EIGENER KERNEL ██ │  │     ║
+
║  │  │ ██ EIGENER KERNEL ██   │  │    │  │ ██ EIGENER KERNEL ██   │  │     ║
−
║  │  └────────────────────────┘  │    │  └────────────────────────┘  │     ║
+
║  │  └────────────────────────┘  │    │  └────────────────────────┘  │     ║
−
║  │  ┌────────────────────────┐  │    │  ┌────────────────────────┐  │     ║
+
║  │  ┌────────────────────────┐  │    │  ┌────────────────────────┐  │     ║
−
║  │  │ Emulierte Hardware    │  │    │  │ Emulierte Hardware    │  │     ║
+
║  │  │ Emulierte Hardware    │  │    │  │ Emulierte Hardware    │  │     ║
−
║  │  │ vCPU, vRAM, vNIC,vDisk│ │    │  │ vCPU, vRAM, vNIC,vDisk│ │     ║
+
║  │  │ vCPU, vRAM, vNIC,vDisk │ │    │  │ vCPU, vRAM, vNIC,vDisk │ │     ║
−
║  │  └────────────────────────┘  │    │  └────────────────────────┘  │     ║
+
║  │  └────────────────────────┘  │    │  └────────────────────────┘  │     ║
−
║  └──────────────┬───────────────┘    └──────────────┬───────────────┘     ║
+
║  └──────────────┬───────────────┘    └──────────────┬───────────────┘     ║
 
║                │                                  │                      ║
 
║                │                                  │                      ║
−
║  ┌──────────────┴───────────────────────────────────┴───────────────┐     ║
+
║  ┌──────────────┴───────────────────────────────────┴───────────────┐     ║
−
║  │                    HYPERVISOR (z.B. KVM/QEMU)                  │     ║
+
║  │                    HYPERVISOR (z.B. KVM/QEMU)                  │     ║
−
║  ├──────────────────────────────────────────────────────────────────┤     ║
+
║  ├──────────────────────────────────────────────────────────────────┤     ║
−
║  │                    HOST-KERNEL                                  │     ║
+
║  │                    HOST-KERNEL                                  │     ║
−
║  ├──────────────────────────────────────────────────────────────────┤     ║
+
║  ├──────────────────────────────────────────────────────────────────┤     ║
−
║  │                    HARDWARE                                    │     ║
+
║  │                    HARDWARE                                    │     ║
−
║  └──────────────────────────────────────────────────────────────────┘     ║
+
║  └──────────────────────────────────────────────────────────────────┘     ║
 
║                                                                            ║
 
║                                                                            ║
−
║  Jede VM hat einen EIGENEN Kernel + emulierte Hardware                   ║
+
║  Jede VM hat einen EIGENEN Kernel + emulierte Hardware                     ║
−
║  → Mehr Overhead, aber vollständige Isolation                             ║
+
║  → Mehr Overhead, aber vollständige Isolation                             ║
−
║  → Verschiedene Betriebssysteme möglich (Linux, Windows, BSD)             ║
+
║  → Verschiedene Betriebssysteme möglich (Linux, Windows, BSD)             ║
 
║                                                                            ║
 
║                                                                            ║
 
╚════════════════════════════════════════════════════════════════════════════╝
 
╚════════════════════════════════════════════════════════════════════════════╝
 
```
 
```
 
</pre>
 
</pre>
 +
 +
*[[Userspace]]

Aktuelle Version vom 12. Februar 2026, 09:15 Uhr

# 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)              ║
║                                                                            ║
╚════════════════════════════════════════════════════════════════════════════╝
```