GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Linux-Container mit LXC auf CentOS 7 / RHEL 7 einrichten

Linux-Container (LXC) sind eine leichtgewichtige Virtualisierungsmethode auf Betriebssystemebene, mit der wir mehrere isolierte Linux-Systeme (Container) auf einem einzigen Host ausführen können. LXC bietet nicht alle Funktionen von Standard-Virtualisierungssoftware wie VMware, VirtualBox und KVM, sondern eine virtuelle Umgebung mit eigener CPU, Speicher, Block-E/A und Netzwerk. LXC erstellt eine Linux-Umgebung, die einer Standard-Linux-Installation so nahe kommt, aber ohne die Notwendigkeit eines separaten Kernels.

LXC ist kostenlose Software und wird unter der GNU LGPLv2.1+-Lizenz veröffentlicht. Das LXC-Projekt wird von Canonical Ltd gesponsert, das hinter Ubuntu OS steht.

In dieser Anleitung zeige ich Ihnen, wie Sie LXC installieren und wie Sie LXC über die Befehlszeile sowie über das LXC-Webportal erstellen und verwalten .

Voraussetzungen

LXC ist im Base-Repo nicht verfügbar. Daher müssen wir das EPEL-Repository mit dem folgenden Befehl zum Server hinzufügen.

# yum -y install epel-release

LXC-Container verwenden Bridge-Networking, um Zugriff auf/von einem externen Netzwerk zu haben, bevor wir den Container starten, müssen wir eine Netzwerkbrücke auf CentOS 7 / RHEL 7 erstellen . Der Name der Netzwerkbrücke sollte „virbr0“ lauten

Installieren Sie LXC auf CentOS 7

Sobald Sie die Voraussetzungen erfüllt haben, ist es an der Zeit, LXC zu installieren. Installieren Sie LXC und andere wichtige Pakete, die erforderlich sind, damit die Container ordnungsgemäß funktionieren.

# yum -y install lxc lxc-templates libcap-devel libcgroup busybox wget bridge-utils lxc-extra

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob alles in Ordnung ist, um Container auszuführen.

# lxc-checkconfig

 Kernel configuration not found at /proc/config.gz; searching...
 Kernel configuration found at /boot/config-3.10.0-327.el7.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 clone_children flag: enabled
 Cgroup device: enabled
 Cgroup sched: enabled
 Cgroup cpu account: enabled
 Cgroup memory controller: enabled
 Cgroup cpuset: enabled
--- Misc ---
 Veth pair device: enabled
 Macvlan: enabled
 Vlan: enabled
 Bridges: enabled
 Advanced netfilter: enabled
 CONFIG_NF_NAT_IPV4: enabled
 CONFIG_NF_NAT_IPV6: enabled
 CONFIG_IP_NF_TARGET_MASQUERADE: enabled
 CONFIG_IP6_NF_TARGET_MASQUERADE: enabled
 CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled
--- Checkpoint/Restore ---
 checkpoint restore: enabled
 CONFIG_FHANDLE: enabled
 CONFIG_EVENTFD: enabled
 CONFIG_EPOLL: enabled
 CONFIG_UNIX_DIAG: enabled
 CONFIG_INET_DIAG: enabled
 CONFIG_PACKET_DIAG: enabled
 CONFIG_NETLINK_DIAG: enabled
 File capabilities: enabled
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig

Linux-Container erstellen

LXC wird mit vorgefertigten Vorlagen für die einfache Installation von Containern geliefert, und Sie können die verfügbaren Vorlagen mit dem folgenden Befehl auflisten.

# ls /usr/share/lxc/templates/

 lxc-alpine    lxc-archlinux  lxc-centos  lxc-debian    lxc-fedora  lxc-openmandriva  lxc-oracle  lxc-sshd    lxc-ubuntu-cloud
 lxc-altlinux  lxc-busybox    lxc-cirros  lxc-download  lxc-gentoo  lxc-opensuse      lxc-plamo   lxc-ubuntu

Um einen Container zu erstellen, führen Sie den folgenden Befehl aus.

# lxc-create -n centos_lxc -t centos

Wo,

-n

-t

Sobald Sie den obigen Befehl ausgegeben haben, beginnt LXC mit der Erstellung des Containers mit dem Namen „centos_lxc “.

Beispielausgabe:

Host CPE ID from /etc/os-release: cpe:/o:centos:centos:7
 Checking cache download in /var/cache/lxc/centos/x86_64/7/rootfs ...
 Downloading centos minimal ...
 Loaded plugins: fastestmirror
 base                                                                                                                                             | 3.6 kB  00:00:00
 updates                                                                                                                                          | 3.4 kB  00:00:00
 Determining fastest mirrors
 .
 .
 .
 .
 Complete!
 Download complete.
 Copy /var/cache/lxc/centos/x86_64/7/rootfs to /var/lib/lxc/centos_lxc/rootfs ...
 Copying rootfs to /var/lib/lxc/centos_lxc/rootfs ...
 sed: can't read /var/lib/lxc/centos_lxc/rootfs/etc/init/tty.conf: No such file or directory
 Storing root password in '/var/lib/lxc/centos_lxc/tmp_root_pass'
 Expiring password for user root.
 passwd: Successsed: can't read /var/lib/lxc/centos_lxc/rootfs/etc/rc.sysinit: No such file or directory
sed: can't read /var/lib/lxc/centos_lxc/rootfs/etc/rc.d/rc.sysinit: No such file or directory

Container rootfs and config have been created.
Edit the config file to check/enable networking setup.

The temporary root password is stored in:

        '/var/lib/lxc/centos_lxc/tmp_root_pass'


The root password is set up as expired and will require it to be changed
at first login, which you should do as soon as possible.  If you lose the
root password or wish to change it without starting the container, you
can change it from the host by running the following command (which will
also reset the expired flag):

        chroot /var/lib/lxc/centos_lxc/rootfs passwd

Bitte beachten Sie die obigen Anmeldedaten, und Sie müssen diese Informationen benötigen, um sich bei den Containern anzumelden.

Container-Anmeldeinformationen

Um sich beim Container anzumelden (centos_lxc ), verwenden Sie entweder das temporäre Root-Passwort, das am folgenden Speicherort gespeichert ist. In unserem Fall „Root-centos_lxc-KRzJLy ” ist das Root-Passwort von centos_lxc .

# cat /var/lib/lxc/centos_lxc/tmp_root_pass

 Root-centos_lxc-KRzJLy

oder

Setzen Sie das Root-Passwort mit dem folgenden Befehl zurück.

# chroot /var/lib/lxc/centos_lxc/rootfs passwd

PS:Sie müssen die Container noch starten.

Linux-Container starten

Nachdem Sie die Container erstellt haben, starten Sie sie mit dem folgenden Befehl, der im Hintergrund ausgeführt wird.

# lxc-start -n centos_lxc -d

Nehmen Sie nun die Konsole des Containers mit dem folgenden Befehl.

Hinweis:Ich verwende „-t“ mit „0“, um den Container mit tty0 zu verbinden, nur weil tty1 nicht auf mich geantwortet hat.

# lxc-console -n centos_lxc -t 0

Geben Sie den Benutzernamen und das Passwort ein, um sich anzumelden. Sie finden die Anmeldeinformationen am Ende der Ausgabe während der Erstellung eines Containers. Sie müssen das Root-Passwort bei der ersten Anmeldung ändern.

Beispielausgabe:

Connected to tty 0
 Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
 CentOS Linux 7 (Core)
 Kernel 3.10.0-327.el7.x86_64 on an x86_64
 centos_lxc login: root
 Password:
 You are required to change your password immediately (root enforced)
 Changing password for root.
 (current) UNIX password:
 New password:
 Retype new password:
 [root@centos_lxc ~]#

Sobald Sie sich angemeldet haben, können Sie alle Arbeiten in diesem Container wie auf einem normalen Linux-Server ausführen.

Um die Container-Konsole zu verlassen, drücken Sie „Strg+a“ gefolgt von „q“ . Jetzt kehren Sie zum Terminal des Host-Computers zurück.

Wenn Sie sich erneut mit dem Container verbinden möchten (der Container läuft noch), führen Sie den folgenden Befehl aus.

# lxc-console -n centos_lxc -t 0

Arbeiten mit Linux-Containern

Verwenden Sie den folgenden Befehl, um die Container auf dem Hostcomputer aufzulisten.

# lxc-ls

 centos_lxc

Listen Sie auch die Container auf, die derzeit aktiv sind und auf dem Hostcomputer ausgeführt werden.

# lxc-ls --active

 centos_lxc

Da ich nur einen Container habe, der derzeit ausgeführt wird, könnten Sie daher für beide Befehle die gleiche Ausgabe sehen.

Wenn Sie die vollständigen Informationen des laufenden Containers erhalten möchten, geben Sie den folgenden Befehl ein.

# lxc-info -n centos_lxc

 Name:           centos_lxc
 State:          RUNNING
 PID:            4047
 IP:             192.168.12.16
 CPU use:        0.47 seconds
 BlkIO use:      6.32 MiB
 Memory use:     4.19 MiB
 KMem use:       0 bytes
 Link:           vethM3N48G
 TX bytes:      1.53 KiB
 RX bytes:      1.94 KiB
 Total bytes:   3.47 KiB

Der obige Befehl gibt Ihnen detaillierte Informationen (Name, Zustand, IP-Adresse, CPU, Arbeitsspeicher, E/A und Netzwerknutzung) des „centos_lxc“-Containers.

Sie können anstelle der LXC-Konsole auch die IP-Adresse verwenden, um sich mit den Containern zu verbinden.

Sie können einen laufenden Container mit dem Befehl „lxc-stop“ stoppen, verwenden Sie den folgenden Befehl, um einen „centos_lxc“-Container zu stoppen.

# lxc-stop -n centos_lxc

Linux-Container klonen

LXC hat eine Zukunft darin, einen Container aus dem vorhandenen Container zu klonen. Führen Sie den folgenden Befehl aus, um einen vorhandenen „centos_lxc“-Container in einen neuen Container „centos_lxc_clone“ zu klonen.

Hinweis:Sie müssen einen laufenden Container anhalten, bevor Sie den Klonvorgang starten.

# lxc-clone centos_lxc centos_lxc_clone
 Created container centos_lxc_clone as copy of centos_lxc

Überprüfen Sie, ob ein Container erfolgreich erstellt wurde.

# lxc-ls
 centos_lxc  centos_lxc_clone

Sie können wie gewohnt mit einem neuen Container arbeiten.

# lxc_start -n centos_lxc_clone -d
# lxc_console -n centos_lxc_clone -t 0
 Connected to tty 0
 Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
 CentOS Linux 7 (Core)
 Kernel 3.10.0-327.el7.x86_64 on an x86_64
 centos_lxc_clone login: root
 Password:
 Last login: Sat Mar 26 14:11:17 from 192.168.12.1
 [root@centos_lxc_clone ~]#

Schalten Sie den Container über die Konsole aus.

[root@centos_lxc_clone ~]# poweroff

Einen Schnappschuss machen

LXC hat auch einen anderen Future namens Snapshot, verwenden Sie die folgenden Befehle.

Hinweis:Sie müssen einen Container anhalten, bevor Sie einen Snapshot erstellen.

# lxc-stop -n centos_lxc_clone

Für eine Demo mache ich den Snapshot von centos_lxc_clone.

# lxc-snapshot -n centos_lxc_clone

Beispielausgabe:

lxc_container: lxccontainer.c: lxcapi_snapshot: 2879 Snapshot of directory-backed container requested.
lxc_container: lxccontainer.c: lxcapi_snapshot: 2880 Making a copy-clone.  If you do want snapshots, then
lxc_container: lxccontainer.c: lxcapi_snapshot: 2881 please create an aufs or overlayfs clone first, snapshot that
lxc_container: lxccontainer.c: lxcapi_snapshot: 2882 and keep the original container pristine.

Führen Sie den folgenden Befehl aus, um zu erfahren, wo der Snapshot gespeichert wird.

# lxc-snapshot -L -n centos_lxc_clone
 snap0 (/var/lib/lxcsnaps/centos_lxc_clone) 2016:03:26 10:59:10

In Centos 7 werden LXC-Snapshots in „/var/lib/lxcsnaps/ gespeichert ”

Snapshot wird wiederhergestellt

Um einen Container aus dem Snapshot wiederherzustellen, verwenden Sie den folgenden Befehl.

# lxc-snapshot -r snap0 -n centos_lxc_clone

Container entfernen

Verwenden Sie den folgenden Befehl, um einen Container vollständig zu entfernen.

# lxc-destroy -n centos_lxc_clone

Ausführen eines Ubuntu-Containers auf CentOS 7

Ich bin auf mehrere Probleme gestoßen, als ich versuchte, einen Ubuntu-Container auf CentOS auszuführen, konnte Ubuntu mit Hilfe einiger Optimierungen ausführen, die auf anderen Websites geteilt wurden.

Installieren Sie die folgenden Pakete für Debian-basierte Container.

# yum -y install debootstrap perl
# cd /usr/sbin ; ln -sf debootstrap qemu-debootstrap

Führen Sie den folgenden Befehl aus, um den Debian-Spiegel durch den Ubuntu-Spiegel zu ersetzen.

# sed -i 's/DEF_HTTPS_MIRROR="https:\/\/mirrors.kernel.org\/debian"/DEF_HTTPS_MIRROR="https:\/\/mirrors.kernel.org\/ubuntu"/g' /usr/sbin/debootstrap

Danke an unix.stackexchange.com

Holen Sie sich den genauen Ubuntu-Schlüsselbund und legen Sie ihn im Schlüsselringverzeichnis ab.

# cd /tmp
# wget "http://archive.ubuntu.com/ubuntu/pool/main/u/ubuntu-keyring/ubuntu-keyring_2011.11.21.tar.gz"
# tar xzf ubuntu-keyring_2011.11.21.tar.gz
# mkdir /usr/share/keyrings/
# cp /tmp/ubuntu-keyring-2011.11.21/keyrings/ubuntu-archive-keyring.gpg /usr/share/keyrings/

Danke an blog.toxa.de

Erstellen Sie mit dem folgenden Befehl einen Ubuntu-Container.

# lxc-create -n ubuntu_lxc -t ubuntu

Checking cache download in /var/cache/lxc/precise/rootfs-amd64 ... 
Installing packages in template: ssh,vim,language-pack-en
Downloading ubuntu precise minimal ...
I: Retrieving Release 
I: Retrieving Release.gpg 
I: Checking Release signature
I: Valid Release signature (key id 630239CC130E1A7FD81A27B140976EAF437D05B5)
I: Retrieving Packages 
I: Validating Packages 
I: Retrieving Packages 

Generation complete.
Setting up libdevmapper1.02.1 (2:1.02.48-4ubuntu7.4) ...
Setting up dmsetup (2:1.02.48-4ubuntu7.4) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Processing triggers for initramfs-tools ...
Processing triggers for resolvconf ...
invoke-rc.d: policy-rc.d denied execution of start.
Download complete
Copy /var/cache/lxc/precise/rootfs-amd64 to /var/lib/lxc/ubuntu_lxc/rootfs ... 
Copying rootfs to /var/lib/lxc/ubuntu_lxc/rootfs ...
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Creating SSH2 ECDSA key; this may take some time ...
Timezone in container is not configured. Adjust it manually.
##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##

Aus der obigen Ausgabe können Sie sehen, dass der Standardbenutzer „ubuntu“ ist und das Passwort für den Benutzer „ubuntu“ ist.

Nehmen Sie mit dem folgenden Befehl eine Konsole des Ubuntu-Containers.

# lxc_console -n ubuntu_lxc

Ubuntu 12.04.5 LTS ubuntu_lxc console
ubuntu_lxc login: ubuntu
Password: 
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 3.10.0-327.10.1.el7.x86_64 x86_64)
 * Documentation:  https://help.ubuntu.com/
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Would you like to enter a security context? [N]  
ubuntu@ubuntu_lxc:~$

PS:Ich habe die Funktionalität des Servers außer der Anmeldung nicht überprüft, bitte posten Sie hier bei Problemen.

Das ist alles. Seien Sie sozial, teilen Sie dies mit Ihren Freunden.


Cent OS
  1. SysLog-Server auf CentOS 6 / RHEL 6 einrichten

  2. Linux-Container mit LXC auf Ubuntu 16.04 einrichten

  3. Richten Sie Rsyslog mit MySQL und LogAnalyzer auf CentOS/RHEL 6/5 ein

  4. CentOS / RHEL 7:So ändern Sie GRUB2-Argumente mit grubby

  5. Linux-Betriebssystem kann nicht mit Auditd (CentOS/RHEL) gestartet werden

So installieren Sie Java unter RHEL 8 / CentOS 8 Linux

So installieren Sie WordPress unter RHEL 8 / CentOS 8 Linux

So installieren Sie GIMP unter CentOS 8 / RHEL 8 Linux

So richten Sie den NFS-Server unter CentOS 8 / RHEL 8 ein

So richten Sie Jenkins unter CentOS 8 / RHEL 8 ein

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