GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So installieren und richten Sie LXC-Linux-Container unter CentOS / RHEL / Ubuntu ein

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.


Linux
  1. Was ist Podman und wie installiere ich Podman unter Linux?

  2. So installieren Sie VMware Player auf CentOS/RHEL und Ubuntu

  3. So installieren Sie Go in Fedora und Rocky Linux/Centos/RHEL

  4. So installieren und richten Sie Suricata IDS unter Ubuntu 20.04 ein

  5. So installieren und konfigurieren Sie OpenLDAP unter CentOS / RHEL Linux

So installieren und konfigurieren Sie Smartctl unter CentOS/RHEL 8 und Ubuntu 20.04

So installieren Sie Zabbix auf RHEL/CentOS und Debian/Ubuntu

So installieren Sie TeamViewer 15 auf RHEL/CentOS/Fedora und Debian/Ubuntu

So installieren und konfigurieren Sie Memcached unter Ubuntu Linux

So installieren Sie Java 14 unter Linux, Ubuntu, CentOS

So installieren und konfigurieren Sie Sendmail unter Ubuntu