Progmar Marcin Załęczny

Język:

LXC w 64-bitowym Ubuntu 16.04

LXC - to pojemniki Linuksowe (ang. LinuX Containers) pozwalające tworzyć wirtualne środowiska pracy korzystające z tego samego jądra co system gospodarza.

Instalujemy następujące pakiety wraz z zależnościami: sudo apt install lxc lxctl libvirt-bin

Sprawdzamy, czy mamy włączone w jądrze grupy kontroli: $ lxc-checkconfig W wynikach powyższego polecenia powinniśmy otrzymać zawartość podobną do tej:

Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-4.4.0-57-generic
--- 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 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

Utworzenie pojemnika o nazwie ubuntu_lxc z system Ubuntu w tej samej wersji co ta zainstaowana na komputerze gospodarza: sudo lxc-create -n ubuntu_lxc -t ubuntu Opcja -n określa nazwę nadaną tworzonemu pojemnikowi, opcja -t określa szablon (powyżej szablon dla systemu Ubuntu) na podstawie, którego torzymy pojemnik (dostępne szablony znajdują się w katalogu: /usr/share/lxc/templates).

Utworzenie pojemnika o nazwie trusty_lxc z system Ubuntu 14.04 (Trusty Tahr) w architekturze 64-bitowej: sudo lxc-create -n trusty_lxc -t ubuntu -- -r trusty -a amd64 Po opcji -r podajemy nazwę wydania (--release np. trusty) a po opcji -a architekturę (np. amd64).

Wyświetlenie istniejących pojemników: sudo lxc-ls

Uruchomienie pojemnika o podanej nazwie: sudo lxc-start -n ubuntu_lxc -d

Wyświetlenie informacji o podanym pojemniku (m.in. czy jest on uruchomiony): sudo lxc-info -n ubuntu_lxc

Zatrzymanie pojemnika o podanej nazwie: sudo lxc-stop -n ubuntu_lxc

Po uruchomieniu pojemnika można się podłączyć do jego shella za pomocą następującego polecenia: sudo lxc-console -n ubuntu_lxc Uwaga! Powyższe polecenie początkowo może wyświetlić tylko następującą zawartość:

Connected to tty 1
                  Type  to exit the console,  to enter Ctrl+a itself

i nie będzie można zalogować się do shella. W takim razie należy się upewnić, że adres IP pojemnika (wyświetlany przez komendę lxc-info) nie jest blokowany przez firewalla.
Domyślne dane do zalogowania się do shella pojemnika dla systemu Ubuntu, to:
login: ubuntu
hasło: ubuntu
Dane te są wyświetlane na końcu procesu tworzenia pojemnika.
Po zakończeniu pracy w shellu pojemnika możemy się wylogować za pomocą <Ctrl+D> i nacisnąć kombinację <Ctrl+a q>, żeby opuścić konsolę pojemnika.

Klonowanie pojemnika, klonowany pojemnik musi być zatrzymany: sudo lxc-clone -o nazwa_pojemnika_do_sklonowania -n nazwa_nowego_pojemnika

Usuwanie pojemnika: sudo lxc-destroy -n nazwa_pojemnika

Zamrożenie pojemnika: sudo lxc-freeze -n nazwa_pojemnika

Wznowienie działania pojemnika: sudo lxc-unfreeze -n nazwa_pojemnika

Wyświetlenie wszystkich aktywnych pojemników: sudo lxc-ls --active

Wyświetlenie wszystkich zatrzymanych pojemników: sudo lxc-ls --stopped

Wyświetlenie adresu IP pojemnika: sudo lxc-info -i -n nazwa_pojemnika

Wyświetlenie PID-u procesu pojemnika: sudo lxc-info -p -n nazwa_pojemnika

Uruchomienie aplikacji w pojemniku: sudo lxc-attach -n nazwa_pojemnika --polecenie np. aktualizacja pojemnika: sudo lxc-attach -n ubuntu_lxc -- apt-get -qq update
sudo lxc-attach -n ubuntu_lxc -- apt-get -qq -y upgrade
lub sprawdzenie czy uruchomiona jest usługa ssh: sudo lxc-attach -n ubuntu_lxc -- systemctl status sshd.service

Czeka aż pojemnik o podanej nazwie znajdzie się w stanie RUNNING (uruchomiony): sudo lxc-wait -n ubuntu_lxc -s 'RUNNING'

Czeka aż pojemnik o podanej nazwie znajdzie się w stanie STOPPED (zatrzymany): sudo lxc-wait -n ubuntu_lxc -s 'STOPPED'