GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit a spustit kontejnery LXC Linux pomocí příkazů LXC

Kontejnery LXC představují velmi rychlý způsob, jak vytvořit pseudo virtuální prostředí.

V předchozím článku LXC jsme vysvětlili, jak nainstalovat a nakonfigurovat linuxové kontejnery LXC.

V tomto tutoriálu vysvětlíme, jak vytvořit nový kontejner pro Linux, spustit kontejner a přihlásit se k virtuální konzoli LXC, abyste mohli nový kontejner používat.

Pro ukázku v tomto tutoriálu vytvoříme virtuální kontejner CentOS LXC, ale můžete vytvořit virtuální kontejner pro téměř jakoukoli distribuci Linuxu, kterou chcete.

1. Šablony kontejnerů LXC

Linux Containers LXC ve výchozím nastavení poskytuje šablony kontejnerů pro několik populárních linuxových distribucí. Níže jsou uvedeny některé šablony LXC, které můžete okamžitě použít.

  • CentOS
  • Ubuntu
  • Fedora
  • OpenSUSE
  • Gentoo
  • Debian
  • Oracle Linux
  • ArchLinux

Všechny dostupné šablony LXC jsou umístěny v adresáři /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. Vytvořte kontejner pomocí lxc-create

Chcete-li vytvořit kontejner, použijte příkaz lxc-create, jak je znázorněno níže.

V následujícím příkazu:

  • – možnost n označuje název kontejneru
  • Možnost
  • –t označuje šablonu, která se používá k vytvoření kontejneru. V tomto příkladu používáme šablonu lxc-centos k vytvoření kontejneru CentOS.

V tomto příkladu to vytvoří kontejner CentOS s minimální instalací centos.

Tím se stáhnou všechny balíčky, které jsou nutné ke spuštění CentOS minimal (například přibližně 140 balíčků), a nainstalují se jako součást kontejneru MyCentOSContainer1

# 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. Kořenové heslo pro kontejner LXC

Heslo uživatele root pro kontejner LXC je uloženo pod:/usr/local/var/lib/lxc/{container-name}/tmp_root_pass

Takže ve výše uvedeném příkladu pro kontejner LXC, který jsme právě vytvořili, je dočasné heslo root pod následujícím:

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

Heslo uživatele root svého kontejneru můžete kdykoli změnit, a to i v případě, že je kontejner vypnutý, pomocí funkce chroot z řídicího hostitele, jak je uvedeno níže.

# 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. Spusťte LXC Linux Container pomocí lxc-start

Jakmile je kontejner vytvořen, spusťte kontejner pomocí lxc-start, jak je uvedeno níže.

# 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:

Pokud se zobrazí následující chybová zpráva „Kontejner se nepodařilo spustit“, pak je ve vaší konfiguraci něco špatně.

# 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.

Chcete-li přesně zjistit, co je s vaší konfigurací špatně, spusťte kontejner LXC v popředí pomocí volby -F, jak je uvedeno níže.

Pokud se zobrazí následující chybová zpráva „nepodařilo se připojit k mostu“, „nepodařilo se vytvořit netdev“, „se nepodařilo vytvořit síť“, pak není adaptér mostu ve vašem systému správně nakonfigurován.

Zkontrolujte nastavení ifcfg-br0, které jsme zmínili v našem dřívějším článku o nastavení LXC Linux Container, abyste se ujistili, že máte nastavení konfigurace mostu správně a funguje.

# 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. Zobrazení informací o kontejneru pomocí lxc-info

Chcete-li zobrazit podrobné informace o vašem kontejneru, použijte příkaz lxc-info, jak je uvedeno níže.

# 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. Zastavte LXC Linux Container pomocí lxc-stop

Chcete-li zastavit svůj linuxový kontejner LXC, použijte lxc-stop, jak je znázorněno níže, a zadejte název kontejneru, který chcete zastavit.

# lxc-stop -n MyCentOSContainer1

7. Klonujte existující kontejner pomocí lxc-clone

Klonování je užitečné, když chcete pořídit snímek starého kontejneru před provedením jakýchkoli změn v konfiguraci kontejneru. Můžete to použít jako jednoduchou metodu zálohování pro konfiguraci kontejneru.

Klonování kontejneru lze provést pomocí příkazu lxc-clone, jak je znázorněno níže. V tomto případě je nový název kontejneru MyCentOSContainer2

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

8. Odstraňte existující kontejner pomocí lxc-destory

Chcete-li odstranit existující kontejner, použijte příkaz lxc-destroy, jak je znázorněno níže.

# lxc-destroy -n MyCentOSContainer2

9. Připojte se k LXC Linux Container Console

Chcete-li se připojit ke konzole kontejneru, použijte následující příkaz lxc-console.

# 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. Změňte konfigurace LXC pomocí lxc-config

Chcete-li změnit konfiguraci LXC, můžete použít příkaz lxc-config.

Nejprve použijte volbu lxc-config -l, která pouze zobrazí všechny dostupné konfigurace, jak je uvedeno níže.

# 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

Dále použijte volbu lxc.default_config, jak je uvedeno níže, k zobrazení informací o každém konfiguračním souboru a jeho přidružených parametrech.

# 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

Následující příkaz zobrazí patch LXC, kde jsou uloženy všechny kontejnery.

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

Jak vidíme níže, vidíme dva kontejnery, které jsme vytvořili v tomto adresáři.

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

# ls
MyCentOSContainer1  MyCentOSContainer2

Pod adresářem kontejneru uvidíte konfigurační soubor, který obsahuje všechny základní konfigurační informace pro daný kontejner, jak je uvedeno níže.

# 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. Jak používat příkazy „cat“ a „tac“ s příklady v Linuxu

  2. Jak vytvářet, zobrazovat a mazat kontejnery Docker v systému Linux

  3. Jak nainstalovat Linux KVM a vytvořit hostovaný virtuální počítač s příklady

  1. Jak zakázat příkazy vypnutí a restartu v Linuxu

  2. Co je Podman a jak nainstalovat Podman v Linuxu

  3. Jak kopírovat / přesouvat soubory a adresáře v Linuxu pomocí příkazů „cp“ a „mv“.

  1. Jak vytvořit a odstranit uživatelskou skupinu v Linuxu

  2. Jak najít velké soubory linux pomocí příkazů find a du

  3. Najděte soubor pomocí příkazů Najít a najít v Linuxu