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