LXC jest lekką metodą wirtualizacji opartą na kontenerach. W niektórych sytuacjach jest bardziej zalecana niż np. Xen. Ma to miejsce szczególnie w przypadku architektury mikroserwisów. Najważniejsze, że ma mały narzut wydajnościowy i jeśli wszystko jest dobrze skonfigurowane, nie sprawie większych problemów. „Ojczystą” dystrybucją omawianego rozwiązania jest Ubuntu. Zakładamy, że chcemy korzystać z lvm i systemu plików xfs. Przystępujemy o instalacji.
apt install lxc libvirt-clients debootstrap xfsprogs dnsmasq-base lxcfs yum
Edytujemy „/etc/lxc/default.conf”
vim /etc/lxc/default.conf
lxc.network.type = empty
i zastępujemy powyższy wpis, tym znajdującym się poniżej:
lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.flags = up
lxc.network.hwaddr = 00:FF:AA:xx:xx:xx
Następnie edytujemy plik „/etc/default/lxc-net”
vim /etc/default/lxc-net
Ustawiemy:
USE_LXC_BRIDGE="true"
Kolejny krokiem jest włączenie forwardowania plików:
/etc/sysctl.conf
net.ipv4.ip_forward=1
Aby można było tworzyć kontenery z wykorzystaniem LVM i systemu XFS, musimy ładować odpowiedni moduł jądra przy starcie systemu. W tym celu dodajemy do poniższego pliku odpowiedni wpis.
vim /etc/modules
xfs
Już prawie ostatnim krokiem jest uruchomienie skryptu sprawdzającego, czy wszystkie ustawienia są prawidłowe.
lxc-checkconfig
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-4.9.0-7-amd64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: 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
FUSE (for use with lxcfs): 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
Wszystko wygląda dobrze, ale dla pewności uruchommy ponownie system:
reboot
Czas na pierwszy test, tworzymy kontener.
lxc-create -n specadmin -t centos -B lvm --vgname=vg0 --lvname=specadmin --fssize=5G --fstype=xfs
WARNING: xfs signature detected on /dev/vg0/specadmin at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/vg0/taxstory6.
Logical volume "taxstory6" created.
Host CPE ID from /etc/os-release:
'yum' command is missing
lxc-create: lxccontainer.c: create_run_template: 1297 container creation template for taxstory6 failed
Logical volume "taxstory6" successfully removed
lxc-create: tools/lxc_create.c: main: 318 Error creating container taxstory6
Aby utworzyć kontener z CentOS-em na Debianie 9, trzeba zainstalować pakiet yum.
apt-get install yum
Po poprawnym utworzeniu kontenera wyświetli się nam m.in. informacja o położeniu pliku z pierwszym – rozruchowym hasłem użytkownika root.
The temporary root password is stored in:
'/var/lib/lxc/specadmin/tmp_root_pass'
Aby wystartować nasz nowo utworzony kontener, wydajemy komendę:
lxc-start -n specadmin -d