LXC znamená Linux Containers.
Linuxové kontejnery jsou odlehčené „virtualizační“ metody, které spouští více virtuálních jednotek současně na jediném řídicím hostiteli na jediném linuxovém jádře.
Linuxové jádro obsahuje cgroups pro izolaci zdrojů (CPU, paměť, blokové I/O, síť atd.), což nevyžaduje spouštění žádných virtuálních strojů.
Cgroups také poskytuje izolaci jmenného prostoru pro úplnou izolaci aplikací pohled na operační prostředí, včetně stromů procesů, sítí, uživatelských id a připojených souborových systémů.
LXC je software s otevřeným zdrojovým kódem a je licencován pod licencí GNU LGPLv2.1+.
Kontejnery ve skutečnosti využívají funkce jádra zvané jmenné prostory, cgroups a chrooty, aby oddělily uzavřenou oblast.
Takže konečný výsledek LXC vypadá hodně jako virtuální stroj, ale bez hypervizoru.
1. Předběžná žádost o instalaci LXC
Před instalací LXC se ujistěte, že je váš systém aktuální pomocí yum update, jak je uvedeno níže.
# yum update
LXC je závislý na dvou knihovnách; libpcap a libcgroup. To také vyžaduje busybox a bridge utility.
Nainstalujte následující požadované balíčky pro naši instalaci LXC.
# yum install libcap-devel libcgroup busybox wget bridge-utils
Ujistěte se, že máme všechny kompilátory a související vývojové nástroje, které jsou nutné ke kompilaci a instalaci jakéhokoli softwaru ze zdrojového kódu.
# yum groupinstall "Development tools"
Další informace o skupinách yum naleznete v našem článku o příkazech yum.
2. Stáhněte si LXC Linux Containers
Stáhněte si nejnovější verzi LXC z Linux Containers Project.
Použijte wget ke stažení tar ball nejnovější stabilní verze LXC do vašeho počítače, jak je znázorněno níže.
# cd / # wget http://linuxcontainers.org/downloads/lxc-1.1.5.tar.gz
Pokud se při používání výše uvedeného wget zobrazí chybová zpráva související s certifikátem, použijte možnost no-check-certificate, jak je uvedeno níže.
# wget --no-check-certificate https://linuxcontainers.org/downloads/lxc-1.1.5.tar.gz
Alternativně, pokud chcete, můžete také použít git clone ke stažení nejnovější vývojové verze nebo stabilní verze, jak je uvedeno níže.
git clone git://github.com/lxc/lxc -b {branch}
Ve výše uvedeném příkazu může být {branch} buď „master“ pro aktuální vývojovou větev, nebo „stable-1.0“ pro stabilní větev aktualizace verze 1.0.
3. Nakonfigurujte adaptér Bridged Adapter
Dále vytvořte přemostěný adaptér a nakonfigurujte statickou IP na přemostěném adaptéru, jak je znázorněno v následujícím příkladu ifcfg-eth0. Ujistěte se, že váš fyzický adaptér ukazuje na tento přemostěný adaptér v ifcfg-eth0.
# 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"
Nahraďte všechna „xxx“ ve výše uvedeném souboru hodnotami, které odpovídají vaší IP adrese a masce sítě. Například změňte hodnotu IPADDR ve výše uvedeném souboru na ip-adresu vašeho počítače.
4. Nainstalujte LXC Linux Container
Dále rozbalte LXC tar ball, který jsme stáhli dříve, spusťte ./configure a proveďte make a make install, abyste nainstalovali LXC do vašeho systému, jak je znázorněno níže.
Ve výchozím nastavení to nainstaluje všechny binární soubory lxc do adresáře /usr/local/bin.
# cd / # tar xvfz lxc-1.1.5.tar.gz # cd lxc-1.1.5/ # ./configure # make && make install
Následuje několik posledních řádků z výstupu pro výše uvedený příkaz ./configure.
# ./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
Následuje několik posledních řádků z výstupu pro výše uvedený příkaz make.
# 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'. ...
Následuje několik posledních řádků z výstupu pro výše uvedený příkaz make install.
# 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. Vytvořte měkký odkaz pro sdílené knihovny LXC
Spuštěním lxc-info ověřte, že je LXC úspěšně nainstalován. Pokud je vše správně nainstalováno, zobrazí se zpráva, že zadaný název kontejneru (například test) neexistuje. V této fázi jsme nevytvořili žádný kontejner. Chceme se jen ujistit, že tento příkaz nevyvolává žádné chyby související se sdílenou knihovnou.
# lxc-info --name test test doesn't exist
V závislosti na tom, jak jsou věci nakonfigurovány ve vašem systému, můžete také obdržet následující chybovou zprávu související s knihovnou liblxc.so.1.
# lxc-info --name test lxc-info: error while loading shared libraries: liblxc.so.1: cannot open shared object file: No such file or directory
V tomto případě to opravíte vytvořením odkazu s názvem libxc.so.1, jak je znázorněno níže, který bude odkazovat na správnou verzi souboru liblxc.so.x.x.x.
# 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. Ověřte nastavení a konfiguraci LXC
Dále můžete také spustit lxc-checkconfig a ověřit, že je vaše prostředí lxc nastaveno správně.
Následující budou mít výstup ve čtyřech různých sekcích:1) Namespaces, 2) Control Groups 3) Misc a 4) Checkpoint/Restore. Částečný výstup je zobrazen níže.
# 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
Pokud je vše ve vašem systému správně nakonfigurováno, ve výše uvedeném výstupu by všechny možnosti ve výše uvedených skupinách měly říkat „povoleno“.
Zítra v další části série článků LXC vysvětlíme, jak vytvořit, spustit a používat linuxové kontejnery lxc pomocí různých příkazů lxc.