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

So erstellen und starten Sie LXC-Linux-Container mit LXC-Befehlen

LXC-Container sind eine sehr schnelle Möglichkeit, eine pseudovirtuelle Umgebung zu erstellen.

Im vorherigen LXC-Artikel haben wir erklärt, wie man LXC-Linux-Container installiert und konfiguriert.

In diesem Tutorial erklären wir, wie Sie einen neuen Linux-Container erstellen, den Container starten und sich bei der virtuellen LXC-Konsole anmelden, um den neuen Container zu verwenden.

Zur Demonstration erstellen wir in diesem Tutorial einen virtuellen CentOS LXC-Container, aber Sie können einen virtuellen Container für so ziemlich jede gewünschte Linux-Distribution erstellen.

1. LXC-Containervorlagen

Linux-Container LXC bietet standardmäßig Containervorlagen für mehrere beliebte Linux-Distributionen. Im Folgenden finden Sie einige der LXC-Vorlagen, die Sie sofort verwenden können.

  • CentOS
  • Ubuntu
  • Fedora
  • OpenSUSE
  • Egentoo
  • Debian
  • Oracle-Linux
  • ArchLinux

Alle verfügbaren LXC-Vorlagen befinden sich im Verzeichnis /usr/local/share/lxc/templates.

# ls -1 /usr/local/share/lxc/templates
lxc-alpine
lxc-altlinux
lxc-archlinux
lxc-busybox
lxc-centos
lxc-cirros
lxc-debian
lxc-download
lxc-fedora
lxc-gentoo
lxc-openmandriva
lxc-opensuse
lxc-oracle
lxc-plamo
lxc-sshd
lxc-ubuntu
lxc-ubuntu-cloud

2. Erstellen Sie einen Container mit lxc-create

Um den Container zu erstellen, verwenden Sie den Befehl lxc-create wie unten gezeigt.

Im folgenden Befehl:

  • –n-Option gibt den Containernamen an
  • Die Option
  • –t gibt die Vorlage an, die zum Erstellen des Containers verwendet wird. In diesem Beispiel verwenden wir die lxc-centos-Vorlage, um einen CentOS-Container zu erstellen.

In diesem Beispiel wird der CentOS-Container mit der minimalen Centos-Installation erstellt.

Dadurch werden alle Pakete heruntergeladen, die zum Ausführen von CentOS minimal erforderlich sind (z. B. etwa 140 Pakete) und als Teil des MyCentOSContainer1-Containers installiert

# lxc-create -n MyCentOSContainer1 -t /usr/local/share/lxc/templates/lxc-centos
/usr/local/share/lxc/templates/lxc-centos
Host CPE ID from /etc/system-release-cpe: cpe:/o:centos:linux:6:GA
dnsdomainname: Unknown host
Checking cache download in /usr/local/var/cache/lxc/centos/x86_64/6/rootfs ... 
Downloading centos minimal ...
...
...
  Installing : libgcc-4.4.7-16.el6.x86_64       1/142 
  Installing : setup-2.8.14-20.el6_4.1.noarch   2/142 
  Installing : filesystem-2.4.30-3.el6.x86_64   3/142 
...
  Verifying  : gzip-1.3.12-22.el6.x86_64        139/142 
  Verifying  : mingetty-1.08-5.el6.x86_64       140/142 
  Verifying  : libxml2-2.7.6-20.el6_7.1.x86_64  141/142 
  Verifying  : 1:findutils-4.4.2-6.el6.x86_64   142/142 
...
Download complete.
Copy /usr/local/var/cache/lxc/centos/x86_64/6/rootfs to /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs ... 
Copying rootfs to /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs ...

3. Root-Passwort für den LXC-Container

Das Root-Passwort für den LXC-Container wird gespeichert unter:/usr/local/var/lib/lxc/{container-name}/tmp_root_pass

Im obigen Beispiel lautet das temporäre Root-Passwort für den gerade erstellten LXC-Container also wie folgt:

# cat /usr/local/var/lib/lxc/MyCentOSContainer1/tmp_root_pass
Root-MyCentOSContainer1-pf7qMB

Sie können das Root-Passwort Ihres Containers jederzeit ändern, auch wenn Ihr Container ausgeschaltet ist, indem Sie chroot vom Kontrollhost wie unten gezeigt verwenden.

# chroot /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs passwd
Changing password for user root.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

4. Starten Sie den LXC-Linux-Container mit lxc-start

Sobald der Container erstellt ist, verwenden Sie lxc-start wie unten gezeigt, um Ihren Container zu starten.

# lxc-start -n MyCentOSContainer1
lxc-start: cgfs.c: handle_cgroup_settings: 2077 Device or resource busy - failed to set memory.use_hierarchy to 1; continuing

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login: init: rcS main process (8) killed by TERM signal
Entering non-interactive startup
Bringing up loopback interface:               [  OK  ]
Bringing up interface eth0:
Determining IP information for eth0... done.  [  OK  ]
Starting system logger:                       [  OK  ]
Mounting filesystems:                         [  OK  ]
Generating SSH2 RSA host key:                 [  OK  ]
Generating SSH1 RSA host key:                 [  OK  ]
Generating SSH2 DSA host key:                 [  OK  ]
Starting sshd:               				  [  OK  ]

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login:

Wenn Sie die folgende Fehlermeldung „Container konnte nicht gestartet werden“ erhalten, stimmt etwas in Ihrer Konfiguration nicht.

# lxc-start -n MyCentOSContainer1
lxc-start: lxc_start.c: main: 344 The container failed to start.
lxc-start: lxc_start.c: main: 346 To get more details, run the container in foreground mode.
lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.

Um genau herauszufinden, was mit Ihrer Konfiguration falsch ist, führen Sie den LXC-Container im Vordergrund aus, indem Sie die Option -F wie unten gezeigt verwenden.

Wenn Sie die folgende Fehlermeldung „Failed to Attach to Bridge“, „failed to create netdev“, „failed to create the network“ erhalten, dann ist der Bridge-Adapter auf Ihrem System nicht richtig konfiguriert.

Überprüfen Sie die ifcfg-br0-Einstellungen, die wir in unserem früheren Artikel zur Einrichtung des LXC-Linux-Containers erwähnt haben, um sicherzustellen, dass die Bridge-Konfiguration richtig eingerichtet ist und funktioniert.

# lxc-start -F -n MyCentOSContainer1
lxc-start: conf.c: instantiate_veth: 2796 failed to attach 'veth8VPW29' to the bridge 'lxcbr0': Operation not permitted
lxc-start: conf.c: lxc_create_network: 3079 failed to create netdev
lxc-start: start.c: lxc_spawn: 935 failed to create the network
lxc-start: start.c: __lxc_start: 1192 failed to spawn 'MyCentOSContainer1'
lxc-start: lxc_start.c: main: 344 The container failed to start.
lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.

5. Zeigen Sie Containerinformationen mit lxc-info

an

Um detaillierte Informationen zu Ihrem Container anzuzeigen, verwenden Sie den lxc-info-Befehl wie unten gezeigt.

# lxc-info -n MyCentOSContainer1
Name:           MyCentOSContainer1
State:          RUNNING
PID:            7696
IP:             192.168.100.101
CPU use:        1.61 seconds
BlkIO use:      32.00 KiB
Memory use:     2.63 MiB
Link:           vethLNI1UH
 TX bytes:      1.98 KiB
 RX bytes:      46.08 KiB
 Total bytes:   48.06 KiB

6. Beenden Sie den LXC-Linux-Container mit lxc-stop

Um Ihren LXC-Linux-Container zu stoppen, verwenden Sie lxc-stop wie unten gezeigt und geben Sie den Namen des Containers an, den Sie stoppen möchten.

# lxc-stop -n MyCentOSContainer1

7. Klonen Sie einen vorhandenen Container mit lxc-clone

Das Klonen ist nützlich, wenn Sie einen Snapshot des alten Containers erstellen möchten, bevor Sie Änderungen an der Konfiguration des Containers vornehmen. Sie können dies als einfache Sicherungsmethode für die Containerkonfiguration verwenden.

Das Klonen des Containers kann mit dem Befehl lxc-clone wie unten gezeigt durchgeführt werden. In diesem Fall lautet der neue Containername MyCentOSContainer2

# lxc-clone -o MyCentOSContainer1 -n MyCentOSContainer2
Created container MyCentOSContainer2 as copy of MyCentOSContainer1

8. Löschen Sie einen vorhandenen Container mit lxc-destory

Um einen vorhandenen Container zu löschen, verwenden Sie den Befehl lxc-destroy wie unten gezeigt.

# lxc-destroy -n MyCentOSContainer2

9. Stellen Sie eine Verbindung zur LXC-Linux-Containerkonsole her

Verwenden Sie den folgenden lxc-console-Befehl, um eine Verbindung zur Konsole des Containers herzustellen.

# lxc-console -n MyCentOSContainer1
Connected to tty 1
Type Ctrl+a q to exit the console, Ctrl+a Ctrl+a to enter Ctrl+a itself

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login:

10. Ändern Sie die LXC-Konfigurationen mit lxc-config

Um die LXC-Konfiguration zu ändern, können Sie den Befehl lxc-config verwenden.

Verwenden Sie zuerst die Option lxc-config -l, die nur alle verfügbaren Konfigurationen wie unten gezeigt anzeigt.

# lxc-config -l
lxc.default_config
lxc.lxcpath
lxc.bdev.lvm.vg
lxc.bdev.lvm.thin_pool
lxc.bdev.zfs.root
lxc.cgroup.use
lxc.cgroup.pattern

Verwenden Sie als Nächstes die Option lxc.default_config wie unten gezeigt, um Informationen zu jeder Konfigurationsdatei und den zugehörigen Parametern anzuzeigen.

# lxc-config lxc.default_config
/usr/local/etc/lxc/default.conf

# cat /usr/local/etc/lxc/default.conf
lxc.network.type = veth
lxc.network.link = virbr0
lxc.network.flags = up

Der folgende Befehl zeigt den LXC-Patch an, in dem alle Container gespeichert sind.

# lxc-config lxc.lxcpath
/usr/local/var/lib/lxc

Wie wir unten sehen, sehen wir die zwei Container, die wir unter diesem Verzeichnis erstellt haben.

# cd /usr/local/var/lib/lxc

# ls
MyCentOSContainer1  MyCentOSContainer2

Unter dem Containerverzeichnis sehen Sie die Konfigurationsdatei, die alle grundlegenden Konfigurationsinformationen für diesen bestimmten Container enthält, wie unten gezeigt.

# cd /usr/local/var/lib/lxc/MyCentOSContainer1

# vi config
lxc.network.type = veth
lxc.network.link = virbr0
lxc.network.hwaddr = fb:bb:f2:87:e8:17
lxc.network.flags = up
lxc.rootfs = /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs
lxc.include = /usr/local/share/lxc/config/centos.common.conf
lxc.arch = x86_64
lxc.utsname = MyCentOSContainer1

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

  2. So erstellen, listen und löschen Sie Docker-Container unter Linux

  3. So erstellen und löschen Sie Benutzergruppen in Linux

  4. So finden Sie große Dateien unter Linux mit den Befehlen find und du

  5. Suchen Sie eine Datei mit den Befehlen Suchen und Suchen in Linux

So erstellen und verwalten Sie Festplattenpartitionen mit Fdisk in Linux

So verwenden Sie die Befehle Pbcopy und Pbpaste unter Linux

So erstellen Sie eine Volumengruppe in Linux mit LVM

So erstellen und verwenden Sie eine Auslagerungsdatei unter Linux

Gewusst wie:Erste Schritte mit Windows-Containern und Docker

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