LXC steht für Linux-Container.
Linux-Container sind einfache „Virtualisierungs“-Methoden, die mehrere virtuelle Einheiten gleichzeitig auf einem einzigen Steuerungshost auf einem einzigen Linux-Kernel ausführen.
Der Linux-Kernel enthält cgroups zur Ressourcenisolation (CPU, Arbeitsspeicher, Block-I/O, Netzwerk usw.), für die keine virtuellen Maschinen gestartet werden müssen.
Cgroups bieten auch Namespace-Isolation, um Anwendungen vollständig zu isolieren Ansicht der Betriebsumgebung, einschließlich Prozessbäumen, Netzwerken, Benutzer-IDs und gemounteten Dateisystemen.
LXC ist Open-Source-Software und unter der GNU LGPLv2.1+-Lizenz lizenziert.
Container nutzen tatsächlich Kernel-Features namens Namespaces, Cgroups und Chroots, um einen geschlossenen Bereich abzutrennen.
Das Endergebnis von LXC sieht also wie eine virtuelle Maschine aus, aber ohne Hypervisor.
1. Voraussetzung für die LXC-Installation
Stellen Sie vor der Installation von LXC sicher, dass Ihr System auf dem neuesten Stand ist, indem Sie yum update wie unten gezeigt verwenden.
# yum update
LXC ist von zwei Bibliotheken abhängig; libpcap und libcgroup. Dies erfordert auch Busybox- und Bridge-Dienstprogramme.
Installieren Sie die folgenden erforderlichen Pakete für unsere LXC-Installation.
# yum install libcap-devel libcgroup busybox wget bridge-utils
Lassen Sie uns sicherstellen, dass wir alle Compiler und zugehörigen Entwicklungstools haben, die zum Kompilieren und Installieren jeglicher Software aus dem Quellcode erforderlich sind.
# yum groupinstall "Development tools"
Weitere Informationen zu Yum-Gruppen finden Sie in unserem Artikel über Yum-Befehle.
2. Laden Sie LXC-Linux-Container herunter
Laden Sie die neueste Version von LXC vom Linux Containers Project herunter.
Verwenden Sie wget, um den Tar-Ball der neuesten stabilen Version von LXC auf Ihren Computer herunterzuladen, wie unten gezeigt.
# cd / # wget http://linuxcontainers.org/downloads/lxc-1.1.5.tar.gz
Wenn Sie bei der Verwendung des obigen wget eine zertifikatbezogene Fehlermeldung erhalten, verwenden Sie die Option no-check-certificate wie unten gezeigt.
# wget --no-check-certificate https://linuxcontainers.org/downloads/lxc-1.1.5.tar.gz
Wenn Sie möchten, können Sie alternativ auch git clone verwenden, um die neueste Entwicklungsversion oder stabile Version wie unten gezeigt herunterzuladen.
git clone git://github.com/lxc/lxc -b {branch}
Im obigen Befehl kann {branch} entweder „master“ für den aktuellen Entwicklungszweig oder „stable-1.0“ für den stabilen Update-Zweig der Version 1.0 sein.
3. Bridged-Adapter konfigurieren
Erstellen Sie als Nächstes einen Bridged-Adapter und konfigurieren Sie die statische IP auf dem Bridged-Adapter wie im folgenden ifcfg-eth0-Beispiel gezeigt. Stellen Sie sicher, dass Ihr physischer Adapter auf diesen Bridged-Adapter in ifcfg-eth0 zeigt.
# cd /etc/sysconfig/network-scripts # vi ifcfg-br0 DEVICE="br0" BOOTPROTO="static" IPADDR="xxx.xxx.xxx.xxx" NETMASK="255.255.255.xxx" ONBOOT="yes" TYPE="Bridge" NM_CONTROLLED="no"
Ersetzen Sie alle „xxx“ in der obigen Datei durch die Werte, die Ihrer IP-Adresse und Netzwerkmaske entsprechen. Ändern Sie beispielsweise den IPADDR-Wert in der obigen Datei in die IP-Adresse Ihres Computers.
4. LXC-Linux-Container installieren
Entpacken Sie als Nächstes den LXC-Tar-Ball, den wir zuvor heruntergeladen haben, führen Sie ./configure aus und führen Sie make und make install aus, um LXC wie unten gezeigt auf Ihrem System zu installieren.
Standardmäßig installiert dies alle lxc-Binärdateien im Verzeichnis /usr/local/bin.
# cd / # tar xvfz lxc-1.1.5.tar.gz # cd lxc-1.1.5/ # ./configure # make && make install
Das Folgende sind einige der letzten Zeilen der Ausgabe für den obigen ./configure-Befehl.
# ./configure ... ... config.status: creating src/python-lxc/setup.py config.status: creating src/lua-lxc/Makefile config.status: executing depfiles commands config.status: executing default commands ---------------------------- Environment: - compiler: gcc - distribution: centos - init script type(s): sysvinit - rpath: no - GnuTLS: no - Bash integration: yes Security features: - Apparmor: no - Linux capabilities: yes - seccomp: no - SELinux: no - cgmanager: no Bindings: - lua: no - python3: no Documentation: - examples: yes - API documentation: yes - user documentation: no Debugging: - tests: no - mutex debugging: no Paths: - Logs in configpath: no
Das Folgende sind die letzten paar Zeilen der Ausgabe für den obigen make-Befehl.
# make ... Building full member lists recursively... Adding members to member groups. ... Generating style sheet... Generating index page... Generating page index... Generating example documentation... Generating file sources... Generating code for file /usr/save/lxc-1.1.5/src/lxc/attach_options.h... Generating code for file /usr/save/lxc-1.1.5/src/lxc/lxccontainer.h... Generating code for file /usr/save/lxc-1.1.5/src/lxc/lxclock.h... Generating file documentation... Generating docs for file /usr/save/lxc-1.1.5/src/lxc/attach_options.h... ... Generating file member index... make[2]: Leaving directory `/usr/save/lxc-1.1.5/doc/api' make[2]: Entering directory `/usr/save/lxc-1.1.5/doc' ... Making all in hooks make[1]: Entering directory `/usr/save/lxc-1.1.5/hooks' make[1]: Nothing to be done for `all'. ...
Das Folgende sind die letzten Zeilen der Ausgabe für den obigen make install-Befehl.
# make install ... Making install in hooks make[1]: Entering directory `/usr/save/lxc-1.1.5/hooks' /bin/mkdir -p '/usr/local/share/lxc/hooks' /usr/bin/install -c clonehostname mountecryptfsroot ubuntu-cloud-prep squid-deb-proxy-client '/usr/local/share/lxc/hooks' ... /bin/mkdir -p /usr/local/var/lib/lxc /bin/mkdir -p /usr/local/var/cache/lxc /bin/mkdir -p '/usr/local/lib/pkgconfig' /usr/bin/install -c -m 644 lxc.pc '/usr/local/lib/pkgconfig' ...
5. Softlink für gemeinsam genutzte LXC-Bibliotheken erstellen
Führen Sie lxc-info aus, um zu überprüfen, ob LXC erfolgreich installiert wurde. Wenn alles ordnungsgemäß installiert ist, sehen wir eine Meldung, die besagt, dass der angegebene Containername (z. B. Test) nicht existiert. Wir haben zu diesem Zeitpunkt noch keinen Container erstellt. Wir möchten nur sicherstellen, dass dieser Befehl keine Fehler im Zusammenhang mit gemeinsam genutzten Bibliotheken auslöst.
# lxc-info --name test test doesn't exist
Je nachdem, wie die Dinge auf Ihrem System konfiguriert sind, erhalten Sie möglicherweise auch die folgende liblxc.so.1-Bibliotheks-bezogene Fehlermeldung.
# lxc-info --name test lxc-info: error while loading shared libraries: liblxc.so.1: cannot open shared object file: No such file or directory
Um das Problem zu beheben, erstellen Sie in diesem Fall einen Link namens libxc.so.1, wie unten gezeigt, der auf die richtige Version der Datei liblxc.so.x.x.x verweist.
# ln -s /usr/local/lib/liblxc.so.1.1.5 /lib64/liblxc.so.1 # ls -l /lib64/liblxc.so.1 lrwxrwxrwx. 1 root root 30 Jan 20 09:17 /lib64/liblxc.so.1 -> /usr/local/lib/liblxc.so.1.1.5
6. Überprüfen Sie die Einrichtung und Konfiguration von LXC
Als nächstes können Sie auch lxc-checkconfig ausführen, um zu überprüfen, ob Ihre lxc-Umgebung korrekt eingerichtet ist.
Das Folgende wird in vier verschiedenen Abschnitten ausgegeben:1) Namespaces, 2) Control Groups, 3) Misc und 4) Checkpoint/Restore. Eine Teilausgabe wird unten angezeigt.
# lxc-checkconfig Kernel configuration not found at /proc/config.gz; searching... Kernel configuration found at /boot/config-2.6.32-431.el6.x86_64 --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled Network namespace: enabled Multiple /dev/pts instances: enabled --- Control groups --- Cgroup: enabled Cgroup namespace: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled .. --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled Bridges: enabled Advanced netfilter: enabled .. --- Checkpoint/Restore --- CONFIG_EVENTFD: enabled CONFIG_EPOLL: enabled .. Note : Before booting a new kernel, you can check its configuration usage : CONFIG=/path/to/config /usr/local/bin/lxc-checkconfig
Wenn auf Ihrem System alles richtig konfiguriert ist, sollten in der obigen Ausgabe alle Optionen in den obigen Gruppen „aktiviert“ lauten.
Morgen erklären wir im nächsten Teil der LXC-Artikelserie, wie Sie lxc-Linux-Container mit verschiedenen lxc-Befehlen erstellen, starten und verwenden.