Razlika između inačica stranice LXC

Izvor: HrOpenWiki
Skoči na: orijentacija, traži
m (Instalacija na primjeru Fedore)
m (Dodatne opcije)
 
Nije prikazano 12 međuinačica istog suradnika
Redak 1: Redak 1:
LXC (Linux containers) skup je alata i metoda kojima se omogućuje izolacija procesa, korisnika, mreža i sl. od matičnog sustava: razina izolacije slična je virtualizacijskim tehnikama, ali je ograničenje u tome što sustav u spremniku/kontejneru dijeli isti kernel s matičnim sustavom, dok u usporedbi s chrootom LXC omogućuje puno veću fleksibilnost i upravljanje virtualnim resursima (ne samo datotekama).
+
LXC (Linux containers) skup je alata i metoda baziranih na mogućnosti kontrolnih grupa (cgroups) [[Linux]] [[kernel]]a kojima se omogućuje izolacija procesa, korisnika, mreža i sl. od matičnog sustava: razina izolacije slična je virtualizacijskim tehnikama, ali je ograničenje u tome što sustav u spremniku/kontejneru dijeli isti kernel s matičnim sustavom, dok u usporedbi s chrootom LXC omogućuje puno veću fleksibilnost i upravljanje virtualnim resursima (ne samo datotekama).
  
 
== Instalacija na primjeru Fedore ==
 
== Instalacija na primjeru Fedore ==
Redak 12: Redak 12:
  
 
* podešavanje mrežnog pristupa preko systemd servisa (donekle prema [https://www.flockport.com/enable-lxc-networking-in-debian-jessie-fedora-and-others/]): lxc-net.service; za različite pristupe vidjeti [https://wiki.debian.org/LXC/SimpleBridge]; moguće je korištenje i libvirtd daemona [https://fedoraproject.org/wiki/LXC] - ali u tom slučaju potrebno je koristiti neke pretpostavljene značajke takvog pristupa (preporučljivo ukoliko se već koristi libvirtd na istom sustavu)
 
* podešavanje mrežnog pristupa preko systemd servisa (donekle prema [https://www.flockport.com/enable-lxc-networking-in-debian-jessie-fedora-and-others/]): lxc-net.service; za različite pristupe vidjeti [https://wiki.debian.org/LXC/SimpleBridge]; moguće je korištenje i libvirtd daemona [https://fedoraproject.org/wiki/LXC] - ali u tom slučaju potrebno je koristiti neke pretpostavljene značajke takvog pristupa (preporučljivo ukoliko se već koristi libvirtd na istom sustavu)
 +
 +
* u ''/etc/sysconfig/lxc'' potrebno je omogućiti LXC bridge:
 +
USE_LXC_BRIDGE="true"
 +
 +
* nakon toga, u većini distribucija postoji već pripremljeni systemd servis koji stvara mrežni most, omogućuje ga, postavlja IP adrese u 10.0.3.0 subnetu (10.0.3.1 je adresa matičnog sustava, dok se 10.0.3.x dodjeljuju spremnicima: informacije o dodjeljenim IP-ovima dnsmasq sprema u ''/var/lib/misc/dnsmasq.lxcbr0.leases'')
  
 
  systemctl enable lxc-net
 
  systemctl enable lxc-net
Redak 21: Redak 26:
 
  systemctl start lxc
 
  systemctl start lxc
  
== Predlošci (templates) ==
+
* s ovim mrežnim postavom u ''/etc/lxc/default.conf'' predstoji još dodati informacije o mreži koje će uključivati svi spremnici:
 +
 +
lxc.network.type = veth
 +
lxc.network.link = lxcbr0
 +
lxc.network.flags = up
 +
lxc.network.hwaddr = 00:16:3e:xx:xx:xx
 +
 
 +
== Predlošci u LXC-u ==
 +
 
 +
LXC omogućuje izradu spremnika na temelju predložaka (templates), a s paketom ''lxc-templates'' već dolazi mnogo pripremljenih (popis se može naći obično u ''/usr/share/lxc/templates/''). Postoji i ''download'' predložak preko kojeg se mogu direktno preuzeti gotove slike iz repozitorija [http://images.linuxcontainers.org/ images.linuxcontainers.org].
 +
 
 +
Stvaranje novog spremnika iz predloška postiže se s '''lxc-create''' naredbom, npr.
 +
 
 +
lxc-create --template download --name mojspremnik
 +
 
 +
gdje je ''--template'' (ili samo ''-t'') naziv predloška iz kojeg se spremnik kreira, a ''--name'' (''-n'') je naziv tog (budućeg) spremnika.
 +
 
 +
Opcije download-predlošku, odnosno skripti, mogu se proslijediti i direktno, npr.
 +
 
 +
lxc-create --template download --name fedora23 -- --dist fedora --release 23 --arch amd64
 +
lxc-create --template download --name ubuntu_i386 -- --dist ubuntu --release precise --arch i386
 +
 
 +
ili kraće -d, -r i -a za distribuciju, izdanje i arhitekturu.
 +
 
 +
== Osnovne naredbe ==
 +
 
 +
* ''lxc-create --name imespremnika'' - naredba za stvaranje novog spremnika (obično će se spremnik stvoriti u '/var/lib/lxc' ako nije drugačije naznačeno s opcijom ''--dir'' ili s ''default.conf'')
 +
* ''lxc-start --name imespremnika'' - pokreće spremnik (treba paziti na opciju --daemon/-d koja je na nekim distribucijama zadana, a na nekima ne - u pravilu se želi pokrenuti spremnik u pozadini, s --daemon)
 +
* ''lxc-ls --fancy'' - popis spremnika s dodatnim informacijama, bez -f, odnosno --fancy ispisuje samo popis
 +
* ''lxc-checkconfig'' - provjerava postavke sustava i kernela kako bi se ustanovilo podržava li sustav LXC spremnike
 +
* ''lxc-destroy --name imespremnika'' - uklanja, odnosno briše spremnik zadanog naziva
 +
* ''lxc-stop --name imespremnika'' - zaustavlja spremnik (obrnuto od lxc-start)
 +
* ''lxc-attach --name imespremnika'' - ulaženje u spremnik (obično direktno kao root korisnik, ako se ne koristi ''--elevated-privileges=PRIVILEGES'')
 +
* ''lxc-top'' - prikaz potrošnje resursa pokrenutih spremnika
 +
* ''lxc-snapshot'' - spremanje trenutnog stanja spremnika
 +
Popis svih naredbi abecednim redom:
 +
lxc-attach
 +
lxc-autostart
 +
lxc-cgroup
 +
lxc-checkconfig
 +
lxc-checkpoint
 +
lxc-config
 +
lxc-console
 +
lxc-copy
 +
lxc-create
 +
lxc-destroy
 +
lxc-device
 +
lxc-execute
 +
lxc-freeze
 +
lxc-info
 +
lxc-ls
 +
lxc-monitor
 +
lxc-snapshot
 +
lxc-start
 +
lxc-stop
 +
lxc-top
 +
lxc-unfreeze
 +
lxc-unshare
 +
lxc-usernsexec
 +
lxc-wait
 +
 
 +
== Dodatne opcije ==
 +
Sljedeće opcije dodaju se za svaki spremnik posebno u ''/var/lib/lxc/<imespremnika>/config'' (ili, ako se baš želi, u ''/etc/lxc/default.conf''):
 +
* limitiranje broja jezgri po spremniku:
 +
lxc.cgroup.cpuset.cpus = 0-1 # 2 jezgre
 +
* automatski start spremnika pri pokretanju sustava:
 +
lxc.start.auto = 1
 +
lxc.group = onboot
 +
* dostupnost X11 servera, kao i audio i video uređaja unutar spremnika:
 +
# mounts
 +
# fix for X11 (non-debian-based distro) https://lists.linuxcontainers.org/pipermail/lxc-users/2015-February/008468.html
 +
lxc.mount.entry = tmpfs tmp tmpfs defaults
 +
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
 +
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir
 +
lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,optional,create=dir
 +
lxc.mount.entry = /dev/video0 dev/video0 none bind,optional,create=file
 +
 
 +
* dopuštenje pristupu USB uređaju iz LXC-a (npr. web kamera na /dev/video0):
 +
lxc.cgroup.devices.allow=c 81:0 rwm
 +
 
 +
== Dodatno: podešavanje firewalld-a (CentOS) ==
 +
 
 +
firewall-cmd --direct --passthrough ipv4 -I FORWARD -i lxcbr0 -j ACCEPT
 +
firewall-cmd --direct --passthrough ipv4 -I FORWARD -o lxcbr0 -j ACCEPT
 +
 
 +
== Reference / Dodatni materijali ==
 +
* [https://www.flockport.com/lxc-guide/ Flockport.com - LXC Guide]
 +
* [https://www.flockport.com/run-gui-apps-in-lxc-containers/ Flockport.com - Run GUI apps in LXC containers]
 +
* [http://superuser.com/questions/990855/configure-firewalld-to-allow-bridged-virtual-machine-network-access Postavke Firewalld-a za mrežni most]
 +
* [https://wiki.gentoo.org/wiki/LXC#Unprivileged_containers Gentoo Wiki - LXC Unprivileged containers]

Trenutačna izmjena od 19:33, 5. listopada 2016.

LXC (Linux containers) skup je alata i metoda baziranih na mogućnosti kontrolnih grupa (cgroups) Linux kernela kojima se omogućuje izolacija procesa, korisnika, mreža i sl. od matičnog sustava: razina izolacije slična je virtualizacijskim tehnikama, ali je ograničenje u tome što sustav u spremniku/kontejneru dijeli isti kernel s matičnim sustavom, dok u usporedbi s chrootom LXC omogućuje puno veću fleksibilnost i upravljanje virtualnim resursima (ne samo datotekama).

Instalacija na primjeru Fedore

  • instalacija LXC paketa (lxc, lxc-templates, dnsmasq...)
dnf install lxc lxc-templates lxc-extra
  • instalacija dodatnih paketa potrebnih za ovaj vodič:
dnf install debootstrap
  • podešavanje mrežnog pristupa preko systemd servisa (donekle prema [1]): lxc-net.service; za različite pristupe vidjeti [2]; moguće je korištenje i libvirtd daemona [3] - ali u tom slučaju potrebno je koristiti neke pretpostavljene značajke takvog pristupa (preporučljivo ukoliko se već koristi libvirtd na istom sustavu)
  • u /etc/sysconfig/lxc potrebno je omogućiti LXC bridge:
USE_LXC_BRIDGE="true"
  • nakon toga, u većini distribucija postoji već pripremljeni systemd servis koji stvara mrežni most, omogućuje ga, postavlja IP adrese u 10.0.3.0 subnetu (10.0.3.1 je adresa matičnog sustava, dok se 10.0.3.x dodjeljuju spremnicima: informacije o dodjeljenim IP-ovima dnsmasq sprema u /var/lib/misc/dnsmasq.lxcbr0.leases)
systemctl enable lxc-net
systemctl start lxc-net
  • omogućavanje opcije automatskog pokretanja LXC spremnika pri pokretanju sustava:
systemctl enable lxc
systemctl start lxc
  • s ovim mrežnim postavom u /etc/lxc/default.conf predstoji još dodati informacije o mreži koje će uključivati svi spremnici:
lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx

Predlošci u LXC-u

LXC omogućuje izradu spremnika na temelju predložaka (templates), a s paketom lxc-templates već dolazi mnogo pripremljenih (popis se može naći obično u /usr/share/lxc/templates/). Postoji i download predložak preko kojeg se mogu direktno preuzeti gotove slike iz repozitorija images.linuxcontainers.org.

Stvaranje novog spremnika iz predloška postiže se s lxc-create naredbom, npr.

lxc-create --template download --name mojspremnik

gdje je --template (ili samo -t) naziv predloška iz kojeg se spremnik kreira, a --name (-n) je naziv tog (budućeg) spremnika.

Opcije download-predlošku, odnosno skripti, mogu se proslijediti i direktno, npr.

lxc-create --template download --name fedora23 -- --dist fedora --release 23 --arch amd64
lxc-create --template download --name ubuntu_i386 -- --dist ubuntu --release precise --arch i386

ili kraće -d, -r i -a za distribuciju, izdanje i arhitekturu.

Osnovne naredbe

  • lxc-create --name imespremnika - naredba za stvaranje novog spremnika (obično će se spremnik stvoriti u '/var/lib/lxc' ako nije drugačije naznačeno s opcijom --dir ili s default.conf)
  • lxc-start --name imespremnika - pokreće spremnik (treba paziti na opciju --daemon/-d koja je na nekim distribucijama zadana, a na nekima ne - u pravilu se želi pokrenuti spremnik u pozadini, s --daemon)
  • lxc-ls --fancy - popis spremnika s dodatnim informacijama, bez -f, odnosno --fancy ispisuje samo popis
  • lxc-checkconfig - provjerava postavke sustava i kernela kako bi se ustanovilo podržava li sustav LXC spremnike
  • lxc-destroy --name imespremnika - uklanja, odnosno briše spremnik zadanog naziva
  • lxc-stop --name imespremnika - zaustavlja spremnik (obrnuto od lxc-start)
  • lxc-attach --name imespremnika - ulaženje u spremnik (obično direktno kao root korisnik, ako se ne koristi --elevated-privileges=PRIVILEGES)
  • lxc-top - prikaz potrošnje resursa pokrenutih spremnika
  • lxc-snapshot - spremanje trenutnog stanja spremnika

Popis svih naredbi abecednim redom:

lxc-attach
lxc-autostart
lxc-cgroup
lxc-checkconfig
lxc-checkpoint
lxc-config
lxc-console
lxc-copy
lxc-create
lxc-destroy
lxc-device
lxc-execute
lxc-freeze
lxc-info
lxc-ls
lxc-monitor
lxc-snapshot
lxc-start
lxc-stop
lxc-top
lxc-unfreeze
lxc-unshare
lxc-usernsexec
lxc-wait

Dodatne opcije

Sljedeće opcije dodaju se za svaki spremnik posebno u /var/lib/lxc/<imespremnika>/config (ili, ako se baš želi, u /etc/lxc/default.conf):

  • limitiranje broja jezgri po spremniku:
lxc.cgroup.cpuset.cpus = 0-1 # 2 jezgre
  • automatski start spremnika pri pokretanju sustava:
lxc.start.auto = 1
lxc.group = onboot
  • dostupnost X11 servera, kao i audio i video uređaja unutar spremnika:
# mounts
# fix for X11 (non-debian-based distro) https://lists.linuxcontainers.org/pipermail/lxc-users/2015-February/008468.html
lxc.mount.entry = tmpfs tmp tmpfs defaults
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir
lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,optional,create=dir
lxc.mount.entry = /dev/video0 dev/video0 none bind,optional,create=file
  • dopuštenje pristupu USB uređaju iz LXC-a (npr. web kamera na /dev/video0):
lxc.cgroup.devices.allow=c 81:0 rwm

Dodatno: podešavanje firewalld-a (CentOS)

firewall-cmd --direct --passthrough ipv4 -I FORWARD -i lxcbr0 -j ACCEPT
firewall-cmd --direct --passthrough ipv4 -I FORWARD -o lxcbr0 -j ACCEPT

Reference / Dodatni materijali