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