Unterschiede zwischen den Revisionen 6 und 8 (über 2 Versionen hinweg)
Revision 6 vom 2019-12-08 21:53:42
Größe: 2443
Autor: DanielHess
Kommentar: Die „Alternative“ sind nicht mehr wirklich alternativen, da die Kernel, selbst für Buster, relativ alt sind und auch nur durch die experimentellen Patches von linux-vserver.org aktualisiert werden.
Revision 8 vom 2019-12-08 22:16:21
Größe: 3842
Autor: DanielHess
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 24: Zeile 24:
  bridge-utils debootstrap dirmngr dns-root-data dnsmasq-base liblxc1 libpam-cgfs lxcfs python3-lxc rsync uidmap   arch-test bridge-utils busybox-static cloud-image-utils debootstrap distro-info dns-root-data dnsmasq-base genisoimage libaio1 libglib2.0-0 libglib2.0-data liblxc1 libpam-cgfs lxc-templates lxcfs qemu-utils rsync shared-mime-info uidmap uuid-runtime xdg-user-dirs
Zeile 26: Zeile 26:
  dbus-user-session pinentry-gnome3 tor apparmor btrfs-tools lvm2   cloud-utils-euca ubuntu-archive-keyring squid-deb-proxy-client shunit2 wodim cdrkit-doc btrfs-progs lvm2 python3-lxc qemu-block-extra
Zeile 28: Zeile 28:
  bridge-utils debootstrap dirmngr dns-root-data dnsmasq-base liblxc1 libpam-cgfs lxc lxcfs python3-lxc rsync uidmap
0 upgraded, 12
newly installed, 0 to remove and 0 not upgraded.
Need to get 2509 kB of archives.
After this operation, 5716 kB of additional disk space will be used.
Do you want to continue? [Y/n] 
  arch-test bridge-utils busybox-static cloud-image-utils debootstrap distro-info dns-root-data dnsmasq-base genisoimage libaio1 libglib2.0-0 libglib2.0-data liblxc1 libpam-cgfs lxc lxc-templates lxcfs qemu-utils rsync shared-mime-info uidmap uuid-runtime xdg-user-dirs
0 upgraded, 2
3 newly installed, 0 to remove and 0 not upgraded.
Need to get 8030 kB of archives.
After this operation, 34.4 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Zeile 34: Zeile 34:

= Vorbereitung der unprivilegierten Root-Container =
Da die als VServer gedachten Container von Root während des Startes des Systems erzeugt werden, diese aber unprivilegiert sein sollen, muss ein uid- und gid-Bereich dem Nutzer Root zugewiesen werden (vergl. https://linuxcontainers.org/lxc/getting-started/#creating-unprivileged-containers-as-root):
{{{
root@containers:/etc# git diff
diff --git a/lxc/default.conf b/lxc/default.conf
index d2d1d51..30231e3 100644
--- a/lxc/default.conf
+++ b/lxc/default.conf
@@ -1,3 +1,5 @@
 lxc.net.0.type = empty
 lxc.apparmor.profile = generated
 lxc.apparmor.allow_nesting = 1
+lxc.idmap = u 0 100000 65536
+lxc.idmap = g 0 100000 65536
diff --git a/subgid b/subgid
index dc7d014..44be50f 100644
--- a/subgid
+++ b/subgid
@@ -1,2 +1 @@
-dh:100000:65536
-bodo:165536:65536
+root:100000:65536
diff --git a/subuid b/subuid
index dc7d014..44be50f 100644
--- a/subuid
+++ b/subuid
@@ -1,2 +1 @@
-dh:100000:65536
-bodo:165536:65536
+root:100000:65536
}}}

Was ist LXC und warum machen wir damit VServer

LXC steht für Linux-Containers und ist eine Art virtueller Server für Linux. Dabei nutzen alle virtuellen Server-Instanzen den Kernel der Wirtsystems mit. Implementiert werden die Container in Linux über die Namespace Erweiterungen, die dafür sorgen, dass Prozesse in eigene Adressräume isoliert werden können. Da dies nicht nur Prozesse und Speicher, sondern auch Netzwerke umfasst, können hiermit vollständige virtuelle Server implementiert werde.

Bislang wurde bei PING die ältere Linux-VServer-Implentierung eingesetzt, die einen eigenen Kernel-Patch und Userspace-Tools implementiert. Bis zur Version Squeeze von Debian wurde dabei vom Debian-Kernel-Team ein entsprechend gepatchter Kernel zur Verfügung gestellt. Mit Release von Wheezy wurde dies allerdings zu Gunsten der weiter fortgeschrittenen Entwicklung der Linux-Containers entfernt.

Für Linux-Containers sind einige Optionen zu Namespaces zu aktivieren, was aber bei den Kernel-Images von Debian bereits der Fall ist. Es ist somit nur noch das Paket lxc zu installieren, welches die Userspace-Tools zu Erzeugung und Verwaltung der Container enthält.

Probleme

LXC ist noch in der Entwicklung, früher waren LXC-Container nicht ausbruchsicher, dies ist aber seit Debian Jessie nicht mehr der Fall siehe https://wiki.debian.org/LXC

Konvertierung eines Linux-VServer Gastes in einen LXC Container

http://schmidi2.blog.com/2010/10/25/migrating-from-vserver-to-lxc/

Installation des Hosts

Der Anleitung im Debian Wiki folgend, muss zunächst das LXC-Paket installiert werden:

root@containers:~# apt-get install lxc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  arch-test bridge-utils busybox-static cloud-image-utils debootstrap distro-info dns-root-data dnsmasq-base genisoimage libaio1 libglib2.0-0 libglib2.0-data liblxc1 libpam-cgfs lxc-templates lxcfs qemu-utils rsync shared-mime-info uidmap uuid-runtime xdg-user-dirs
Suggested packages:
  cloud-utils-euca ubuntu-archive-keyring squid-deb-proxy-client shunit2 wodim cdrkit-doc btrfs-progs lvm2 python3-lxc qemu-block-extra
The following NEW packages will be installed:
  arch-test bridge-utils busybox-static cloud-image-utils debootstrap distro-info dns-root-data dnsmasq-base genisoimage libaio1 libglib2.0-0 libglib2.0-data liblxc1 libpam-cgfs lxc lxc-templates lxcfs qemu-utils rsync shared-mime-info uidmap uuid-runtime xdg-user-dirs
0 upgraded, 23 newly installed, 0 to remove and 0 not upgraded.
Need to get 8030 kB of archives.
After this operation, 34.4 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Vorbereitung der unprivilegierten Root-Container

Da die als VServer gedachten Container von Root während des Startes des Systems erzeugt werden, diese aber unprivilegiert sein sollen, muss ein uid- und gid-Bereich dem Nutzer Root zugewiesen werden (vergl. https://linuxcontainers.org/lxc/getting-started/#creating-unprivileged-containers-as-root):

root@containers:/etc# git diff
diff --git a/lxc/default.conf b/lxc/default.conf
index d2d1d51..30231e3 100644
--- a/lxc/default.conf
+++ b/lxc/default.conf
@@ -1,3 +1,5 @@
 lxc.net.0.type = empty
 lxc.apparmor.profile = generated
 lxc.apparmor.allow_nesting = 1
+lxc.idmap = u 0 100000 65536
+lxc.idmap = g 0 100000 65536
diff --git a/subgid b/subgid
index dc7d014..44be50f 100644
--- a/subgid
+++ b/subgid
@@ -1,2 +1 @@
-dh:100000:65536
-bodo:165536:65536
+root:100000:65536
diff --git a/subuid b/subuid
index dc7d014..44be50f 100644
--- a/subuid
+++ b/subuid
@@ -1,2 +1 @@
-dh:100000:65536
-bodo:165536:65536
+root:100000:65536

Software/LXCVServer (zuletzt geändert am 2019-12-21 20:25:38 durch DanielHess)