Lxc: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mmartins (talk | contribs)
Mmartins (talk | contribs)
No edit summary
 
(68 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Autor=
Marvin Martinson A21
19.12.2016
Versioon 1.0
=Sissejuhatus=
=Sissejuhatus=
Linuxi konteinerid ehk ''[https://linuxcontainers.org/ Linux Conteiners(LXC)]'' on tehnoloogia mis kasutab Linuxi tuuma ''[https://en.wikipedia.org/wiki/Cgroups control groups(cgroups)]'' funktsionaalsust, mis võimaldab jooksutada mitut isoleeritut Linuxi operatsioonisüsteemi, ''host'' masinas ühe jagatud kerneli peal. Lihtsamalt seletades jagab ühe arvuti resursse mitme konteineri vahel ja kasutatakse ühist kernelit. Resursside jagamise eest vastutabki ''control groupsi'' funktsionaalsus kernelis. ''[https://en.wikipedia.org/wiki/Linux_namespaces Namespace]'' selle eest, et konteinerid oleksid ükteisest eraldatud, ühe konteineri seest ei saaks ligi teise teenustele. LXC on kasutatav alates kernelist 2.6.24. '''NB! selle õpetuse järgi mitte installida tähtsaid teenuseid ja masinaid, kuna ei ole turvalisusele palju rõhku pandud, õpetus on mõledud juur kasutaja alt jooksutamiseks'''
 
Linux konteinerid on oma olemuselt operatsioonisüsteemi tasemel virtualiseerimine. Linuxi konteinerid ehk ''[https://linuxcontainers.org/ Linux Conteiners(LXC)]'' on tehnoloogia mis kasutab Linuxi tuuma ''[https://en.wikipedia.org/wiki/Cgroups control groups(cgroups)]'' funktsionaalsust. Võimaldab jooksutada mitut isoleeritut Linuxi operatsioonisüsteemi ''host'' masinas ühe jagatud [https://en.wikipedia.org/wiki/Kernel_(operating_system) kerneli] peal. Lihtsamalt seletades jagatakse ühe arvuti ressursse mitme konteineri vahel ja konteinerid kasutavad sama kernelit, mida kasutab füüsiline masin. Ressursside jagamise eest vastutabki control groupsi funktsionaalsus kernelis. Omavahel jagatakse, mälu, protsessorit, võrku jne. Nimeruumi isolatsioon (''[https://en.wikipedia.org/wiki/Linux_namespaces Namespace isolation]'') vastutab selle eest, et konteinerid oleksid üksteisest eraldatud, et ühe konteineri seest ei saaks ligi teise teenustele. LXC on kasutatav alates kernelist 2.6.24.<ref>https://en.wikipedia.org/wiki/LXC</ref> '''NB! selle juhendi järgi mitte installida tähtsaid teenuseid ja masinaid, kuna pole eraldi rõhku pandud turvalisusele. Õpetus on mõeldud juurkasutaja alt käivitamiseks ja pigem mõeldud konteinerite tutvustamiseks.'''
 


==Taust==
==Taust==
Linuxi konteinereid on väga hea kasutada test-keskkonnana, kui tahetakse proovida erinevaid rakendusi ja asjade omavahelist ühilduvust, sest uusi masinaid on väga lihtne luua ja kustutada. Turvalisuse kohapealt on positiivne see, et teenused saab ehitada üles erinevate konteinerite sisse, mis on üksteisest eraldatud.
Näide, kus masinas jookseb mitu konteinerit ja neis on erinevad teenused. Teenused on ära jagatud konteinerite peale nt: wiki, git, pastebin, proxy server.
Näide, kus masinas jookseb mitu konteinerit ja neis on erinevad teenused. Teenused on ära jagatud konteinerite peale nt: wiki, git, pastebin, proxy server.
   |-lvmetad
   |-lvmetad
Line 84: Line 95:
         |-mdadm
         |-mdadm


Kindlasti tähelepanu tõmmata sellele, et mis teenused juba vaikimisi töötavad nagu näiteks '''ssh server'''.
Kindlasti tähelepanu tõmmata sellele, et mis teenused juba vaikimisi töötavad nagu näiteks '''SSH server'''.


Masinate juurfailisüsteem asub vaikimis kaustas.
Konteinerite juurfailisüsteem asub vaikimisi kaustas:
  /var/lib/lxc/'''masinanini'''
  /var/lib/lxc/'''masinanini'''


Installitud masinate puhver asub kaustas /var/chache/lxc/ Seda kasutatakse siis, kui luuakse sama distributsiooniga konteinerid, siis pole vaja uuesti uut konteinerit seadistada vaid tõmmatakse vajalikud failid puhvrist.
Installitud masinate puhver asub kaustas /var/chache/lxc/. Seda kasutatakse siis, kui luuakse sama distributsiooniga konteinerid, siis pole vaja uuesti uut konteinerit seadistada, vaid kopeeritakse vajalikud failid puhvrist.


=Vajalikumad käsud=
=Vajalikumad käsud=
lxc-create - tehakse uus konteiner
lxc-create - tehakse uus konteiner
lxc-start - käivitatakse konteiner
lxc-start - käivitatakse konteiner
lxc-console - ühendab konteineris oleva masina terminaliga.
lxc-console - ühendab konteineris oleva masina terminaliga.
lxc-attach - alustab protsessi konteiner masinas, kui ühtegi parameetrit juurde ei anta, siis võetakse ''host'' masina konsool ja ühendatakse see
lxc-attach - alustab protsessi konteiner masinas, kui ühtegi parameetrit juurde ei anta, siis võetakse ''host'' masina konsool ja ühendatakse see
konteineriga. Näiteks oled host masinas juurkasutajaga sisse logitud, siis tuleb ette juurkasutaja konsool ka konteineris.
konteineriga. Näitena: kui oled ''host'' masinas juurkasutajaga sisse logitud, siis tuleb ette juurkasutaja konsool ka konteineris.
lxc-stop - sulgeb masina
lxc-stop - sulgeb masina


=Seadistamine=
=Seadistamine=
 
Väga suureks abiks on loomulikult ka ametlikud kasutusjuhendid<ref>https://linuxcontainers.org/lxc/manpages//</ref>
==Paigaldamine==
==Paigaldamine==
Installime linux konteineri ja mallid millega teha konteinereid.
Installime linux konteineri ja mallid millega teha konteinereid.
Line 107: Line 118:
==Konteinerite tegemine==
==Konteinerite tegemine==
  lxc-create -n test -t ubuntu -- -r xenial
  lxc-create -n test -t ubuntu -- -r xenial
 
  -n masina nimi
  -n masina nimi
  -t Millise malli põhjal tahad teha
  -t Millise malli põhjal tahad teha
  -- malli seadistused
  -- malli seadistused
  -r väljalaske kood nimetus
  -r väljalaske kood
 
  Näha milliseid seadistusi mall toetab kasutada käsku
  Et näha milliseid seadistusi mall toetab, kasutada käsku
  lxc-create -t MALL -h
  lxc-create -t MALL -h


Line 119: Line 130:
Konteineri kävitaimnine
Konteineri kävitaimnine
  lxc-start -n test -d
  lxc-start -n test -d
Konteineriga on võimalik ühendda kahte moodi.
Konteineriga on võimalik ühendada kahte moodi. Seda on mugav kasutada siis, kui konteinereid tehakse juurkasutajaga, sest siis võetakse konteineris kohe juurkasutaja konsool ette. Ilma parameetriteta käivitatakse hetke konsool konteineris. Näiteks, kui kasutada käsku lxc-attach -n test nano, siis käivitatakse konteineris nano ja fail salvestatakse konteinerisse.
Seda on mugav kasutada siis, kui konteinereid tehakse juur kasutajaga, sest sis võetakse konteineris kohe juur kasutaja konsool ette.
Kui parameetried pole kaasa antud siis käivitatakse hetke konsool konteineris. Näiteks kui kasutada käsku lxc-attach -n test nano, siis käivitatakse konteineris nano ja fail salvestatakse konteinerisse.
  lxc-attach -n test
  lxc-attach -n test
või, kus võetakse ette konteineri konsool ja tuleb kasutajaga sisselogida.
või, kus võetakse ette konteineri konsool ja tuleb kasutajaga sisselogida.
Line 143: Line 152:


===Malli seaded===
===Malli seaded===
Vaikimisi malli seaded asuvad failis. Need seadistused rakenduvad uutele konteineritele mis tehakse, näiteks kui tahad, et masin kasutaks vaikimis teist võrgu-liidest, siis muudad liidese ära.
Vaikimisi malli seaded asuvad /etc/lxc/default.conf. Need seadistused rakenduvad uutele konteineritele mis tehakse(näiteks juhul, kui tahad, et konteiner läheb automaatselt tööle.
/etc/lxc/default.conf
Lisades rea
  lxc.start.auto = 1
  lxc.start.auto = 1
Läheb konteiner automaatselt tööle, kui host masin on ka tööle läinud.
Konteiner läheb automaatselt tööle, kui ''host'' masin on ka tööle läinud.


Iga masina seaded asuvad eraldi failis
Iga masina seaded asuvad eraldi failis:
  /var/lib/lxc/'''masinanimi'''/config
  /var/lib/lxc/'''masinanimi'''/config


Line 162: Line 169:


==Võrgu seadistamine==
==Võrgu seadistamine==
Vaikimisi tehakse uus sild nimega lxcbr0, kuhu külge tulevad konteinerite liidesed. Kus töötab oma dhcp server ja dns kirjed saadakse ''host'' masinast. Iga konteineri kohta tekib ka uus võrguliides nimega '''veth******'''.
Vaikimisi tehakse uus sild nimega lxcbr0, kuhu külge tulevad konteinerite liidesed. Kus töötab oma dhcp server ja dns kirjed saadakse ''host'' masinast. Iga konteineri kohta tekib ka uus võrguliides nimega veth******.


Dhcp seadete fail asub:
Dhcp seadete fail asub:
  /etc/default/lxc-net
  /etc/default/lxc-net
Siin on vaikimisi faili sisu, kui tahate muuta dhcp seadeid, siis siit saab muuta.
Siin on vaikimisi faili sisu, kui tahate muuta dhcp seadeid, siis neid saab muuta siit.
  # This file is auto-generated by lxc.postinst if it does not
  # This file is auto-generated by lxc.postinst if it does not
  # exist.  Customizations will not be overridden.
  # exist.  Customizations will not be overridden.
Line 188: Line 196:
  LXC_DHCP_MAX="253"
  LXC_DHCP_MAX="253"


Selleks, et saaksime konteineritele anda ka sisevõrgu IP, teeme ''host'' masina uue [https://en.wikipedia.org/wiki/Bridging_(networking) võrgusilla] mis on kokku sillatud füüsilise võrgu liidesega.
Selleks on vaja kindlasti installida järgnev pakett.


Selleks, et saaksime konteineritele anda ka sisevõrgu ip, teeme ''host'' masina uue võrgusilla mis on kokku sillatud füüsilise võrgu liidesega.
Selleks on vaja kindlasti installida järgnev pakett.
  apt install bridge-utils
  apt install bridge-utils
Teeme vajalikud muudatused failis /etc/network/interfaces
Teeme vajalikud muudatused failis /etc/network/interfaces<ref>https://lauri.võsandi.com/cfgmgmt/linux-containers.html</ref>
  auto lo
  auto lo
   iface lo inet loopback
   iface lo inet loopback
Line 215: Line 222:
Tulemuste kontrollimiseks saab kasutada käsku:
Tulemuste kontrollimiseks saab kasutada käsku:
  brctl show
  brctl show
väljundist näeme, et masinad on uue silla küljes ja ka füüsiline liides(ens3) on:
väljundist näeme, et masinad on uue silla küljes ja ka füüsiline liides(ens3) ka:
  bridge name bridge id STP enabled interfaces
  bridge name bridge id STP enabled interfaces
  br0 8000.525400c464f5 no ens3
  br0 8000.525400c464f5 no ens3
Line 229: Line 236:


=Turvalisus=
=Turvalisus=
Väga oluline on meeles pidada, et konteineri turvalisusele peab sama palju tähelepanu pöörama, kui eraldiseisvale füüsilisele masinale. Konteineris olevat tarkvara peab ka uuendama, suhtumine et mul asjad jooksevad konteineris las murravad sisse on väga vale suhtumine.
Väga oluline on meeles pidada, et konteineri turvalisusele peab sama palju tähelepanu pöörama, kui eraldiseisvale füüsilisele masinale. Konteineris olevat tarkvara peab ka uuendama ning silmas pidama elementaarseid turvareegleid.
 
=Kokkuvõte=
Puutusin sellega kokku aines VPN, tulemüürid ja ipsec kus oli sellega väga mugav installida erinevaid teenuseid. Tavaliselt kui midagi teenuse installimisel väga katki läks, oli väga kerge uus masin teha ja otsast pihta aluastada. Muidugi tuleb siin suurt tähelepanu pöörata turvalisusele, sest masinat jagavad ju ikkagi ühist kernelit. Linuxi konteinerites on mul väga palju veel juurde õppida. Millest kindasti tuleks rääkida on privileegidega(''privileged'') ja privileegideta(''unprivileged'') konteinerid.
 
=Huvtavad lingid, videod=
 
Postitan siia lehed kust veel infot saab
 
https://www.stgraber.org/ -  Stéphane Graber's blog, kes on Linuxi konteinerite põhi tegijaid.
 
https://linuxcontainers.org/
 
https://linuxcontainers.org/lxc/getting-started/ kuidas teha konteinereid tava kasutaja alla, ehk ''unprivileged conteiners'' ja kuidas on need turvalisemad.
 
https://www.youtube.com/watch?v=2EwFkOrZ7I8 - Videod kuidas seadistada lXC võrku.
 
=Kasutatud allikad=
<references/>
 
 
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]

Latest revision as of 03:48, 21 December 2016

Autor

Marvin Martinson A21

19.12.2016

Versioon 1.0

Sissejuhatus

Linux konteinerid on oma olemuselt operatsioonisüsteemi tasemel virtualiseerimine. Linuxi konteinerid ehk Linux Conteiners(LXC) on tehnoloogia mis kasutab Linuxi tuuma control groups(cgroups) funktsionaalsust. Võimaldab jooksutada mitut isoleeritut Linuxi operatsioonisüsteemi host masinas ühe jagatud kerneli peal. Lihtsamalt seletades jagatakse ühe arvuti ressursse mitme konteineri vahel ja konteinerid kasutavad sama kernelit, mida kasutab füüsiline masin. Ressursside jagamise eest vastutabki control groupsi funktsionaalsus kernelis. Omavahel jagatakse, mälu, protsessorit, võrku jne. Nimeruumi isolatsioon (Namespace isolation) vastutab selle eest, et konteinerid oleksid üksteisest eraldatud, et ühe konteineri seest ei saaks ligi teise teenustele. LXC on kasutatav alates kernelist 2.6.24.[1] NB! selle juhendi järgi mitte installida tähtsaid teenuseid ja masinaid, kuna pole eraldi rõhku pandud turvalisusele. Õpetus on mõeldud juurkasutaja alt käivitamiseks ja pigem mõeldud konteinerite tutvustamiseks.


Taust

Linuxi konteinereid on väga hea kasutada test-keskkonnana, kui tahetakse proovida erinevaid rakendusi ja asjade omavahelist ühilduvust, sest uusi masinaid on väga lihtne luua ja kustutada. Turvalisuse kohapealt on positiivne see, et teenused saab ehitada üles erinevate konteinerite sisse, mis on üksteisest eraldatud.

Näide, kus masinas jookseb mitu konteinerit ja neis on erinevad teenused. Teenused on ära jagatud konteinerite peale nt: wiki, git, pastebin, proxy server.

  |-lvmetad
       |-lxc-autostart---systemd-+-5*[agetty]
       |                         |-cron
       |                         |-dhclient
       |                         |-mysqld---27*[{mysqld}]
       |                         |-rsyslogd-+-{in:imklog}
       |                         |          |-{in:imuxsock}
       |                         |          `-{rs:main Q:Reg}
       |                         `-systemd-journal
       |-lxc-autostart---systemd-+-5*[agetty]
       |                         |-cron
       |                         |-dbus-daemon
       |                         |-dhclient
       |                         |-gogs---9*[{gogs}]
       |                         |-nginx---2*[nginx]
       |                         |-postgres---7*[postgres]
       |                         |-rsyslogd-+-{in:imklog}
       |                         |          |-{in:imuxsock}
       |                         |          |-{rs:action 10 qu}
       |                         |          `-{rs:main Q:Reg}
       |                         |-sshd---sshd---sshd
       |                         |-systemd-journal
       |                         `-systemd-logind
       |-lxc-autostart---systemd-+-5*[agetty]
       |                         |-apache2---6*[apache2]
       |                         |-cron
       |                         |-dbus-daemon
       |                         |-dhclient
       |                         |-mysqld---34*[{mysqld}]
       |                         |-php-fpm7.0---2*[php-fpm7.0]
       |                         |-rsyslogd-+-{in:imklog}
       |                         |          |-{in:imuxsock}
       |                         |          |-{rs:action 10 qu}
       |                         |          `-{rs:main Q:Reg}
       |                         |-sshd
       |                         |-systemd-journal
       |                         `-systemd-logind
       |-lxc-autostart---systemd-+-5*[agetty]
       |                         |-apache2---5*[apache2]
       |                         |-cron
       |                         |-dbus-daemon
       |                         |-dhclient
       |                         |-logger
       |                         |-mysqld_safe-+-logger
       |                         |             `-mysqld---23*[{mysqld}]
       |                         |-rsyslogd-+-{in:imklog}
       |                         |          |-{in:imuxsock}
       |                         |          |-{rs:action 10 qu}
       |                         |          `-{rs:main Q:Reg}
       |                         |-sshd
       |                         |-systemd-journal
       |                         `-systemd-logind
       |-lxc-autostart---systemd-+-5*[agetty]
       |                         |-cron
       |                         |-dbus-daemon
       |                         |-dhclient
       |                         |-gunicorn---gunicorn
       |                         |-nginx---2*[nginx]
       |                         |-nrpe
       |                         |-rsyslogd-+-{in:imklog}
       |                         |          |-{in:imuxsock}
       |                         |          |-{rs:action 10 qu}
       |                         |          `-{rs:main Q:Reg}
       |                         |-sshd
       |                         |-systemd-journal
       |                         `-systemd-logind
       |-lxc-autostart---systemd-+-5*[agetty]
       |                         |-cron
       |                         |-dbus-daemon
       |                         |-dhclient
       |                         |-nginx---2*[nginx]
       |                         |-rsyslogd-+-{in:imklog}
       |                         |          |-{in:imuxsock}
       |                         |          |-{rs:action 0 que}
       |                         |          `-{rs:main Q:Reg}
       |                         |-systemd-journal
       |                         `-systemd-logind
       |-lxcfs---10*[{lxcfs}]
       |-mdadm

Kindlasti tähelepanu tõmmata sellele, et mis teenused juba vaikimisi töötavad nagu näiteks SSH server.

Konteinerite juurfailisüsteem asub vaikimisi kaustas:

/var/lib/lxc/masinanini

Installitud masinate puhver asub kaustas /var/chache/lxc/. Seda kasutatakse siis, kui luuakse sama distributsiooniga konteinerid, siis pole vaja uuesti uut konteinerit seadistada, vaid kopeeritakse vajalikud failid puhvrist.

Vajalikumad käsud

lxc-create - tehakse uus konteiner lxc-start - käivitatakse konteiner lxc-console - ühendab konteineris oleva masina terminaliga. lxc-attach - alustab protsessi konteiner masinas, kui ühtegi parameetrit juurde ei anta, siis võetakse host masina konsool ja ühendatakse see konteineriga. Näitena: kui oled host masinas juurkasutajaga sisse logitud, siis tuleb ette juurkasutaja konsool ka konteineris. lxc-stop - sulgeb masina

Seadistamine

Väga suureks abiks on loomulikult ka ametlikud kasutusjuhendid[2]

Paigaldamine

Installime linux konteineri ja mallid millega teha konteinereid.

apt-get install lxc lxc-templates bridge-utils

Konteinerite tegemine

lxc-create -n test -t ubuntu -- -r xenial
-n masina nimi
-t Millise malli põhjal tahad teha
-- malli seadistused
-r väljalaske kood
Et näha milliseid seadistusi mall toetab, kasutada käsku
lxc-create -t MALL -h

Haldamine ja seadistamine

Konteineri kävitaimnine

lxc-start -n test -d

Konteineriga on võimalik ühendada kahte moodi. Seda on mugav kasutada siis, kui konteinereid tehakse juurkasutajaga, sest siis võetakse konteineris kohe juurkasutaja konsool ette. Ilma parameetriteta käivitatakse hetke konsool konteineris. Näiteks, kui kasutada käsku lxc-attach -n test nano, siis käivitatakse konteineris nano ja fail salvestatakse konteinerisse.

lxc-attach -n test

või, kus võetakse ette konteineri konsool ja tuleb kasutajaga sisselogida.

lxc-console -n test

Nimekiri konteineritest ja mis seisus konteinerid on. Võtmega f saab ilusa tabeli.

lxc-ls -f
LibreNms    RUNNING 1         -      172.16.2.106 fd43:5a19:3963:0:216:3eff:fed0:db66 
git-service RUNNING 1         -      172.16.2.171 fd43:5a19:3963:0:216:3eff:fe7f:1d7b 
mediaWiki   RUNNING 1         -      172.16.2.30  fd43:5a19:3963:0:216:3eff:feaa:49d7 
ownCloud    RUNNING 1         -      172.16.2.240 fd43:5a19:3963:0:216:3eff:fe4e:ea58 
pasteBun    RUNNING 1         -      172.16.2.20  fd43:5a19:3963:0:216:3eff:fe56:cd2f 
proxy       RUNNING 1         -      172.16.2.100 fd43:5a19:3963:0:216:3eff:feb5:4e8b 
test        STOPPED 1         -      -            -                 

Masinate sulgemiseks kasutada käsku.

lxc-stop -n test
-r,--reboot teeb restardi.
-k,--kill masin suletakse jõuga, ei tehta korraliku sulgemist.                 

Malli seaded

Vaikimisi malli seaded asuvad /etc/lxc/default.conf. Need seadistused rakenduvad uutele konteineritele mis tehakse(näiteks juhul, kui tahad, et konteiner läheb automaatselt tööle.

lxc.start.auto = 1

Konteiner läheb automaatselt tööle, kui host masin on ka tööle läinud.

Iga masina seaded asuvad eraldi failis:

/var/lib/lxc/masinanimi/config

Mallid asuvad kaustas:

/usr/share/lxc/templates/

Vaikimis tuleb kaasa erinevate linuxite mallid.

lxc-alpine     lxc-centos    lxc-fedora        lxc-oracle      lxc-sshd
lxc-altlinux   lxc-cirros    lxc-gentoo        lxc-plamo       lxc-ubuntu
lxc-archlinux  lxc-debian    lxc-openmandriva  lxc-slackware   lxc-ubuntu-cloud
lxc-busybox    lxc-download  lxc-opensuse      lxc-sparclinux

Võrgu seadistamine

Vaikimisi tehakse uus sild nimega lxcbr0, kuhu külge tulevad konteinerite liidesed. Kus töötab oma dhcp server ja dns kirjed saadakse host masinast. Iga konteineri kohta tekib ka uus võrguliides nimega veth******.

Dhcp seadete fail asub:

/etc/default/lxc-net

Siin on vaikimisi faili sisu, kui tahate muuta dhcp seadeid, siis neid saab muuta siit.

# This file is auto-generated by lxc.postinst if it does not
# exist.  Customizations will not be overridden.
# Leave USE_LXC_BRIDGE as "true" if you want to use lxcbr0 for your
# containers.  Set to "false" if you'll use virbr0 or another existing
# bridge, or mavlan to your host's NIC.
USE_LXC_BRIDGE="true"

# If you change the LXC_BRIDGE to something other than lxcbr0, then
# you will also need to update your /etc/lxc/default.conf as well as the
# configuration (/var/lib/lxc/<container>/config) for any containers
# already created using the default config to reflect the new bridge
# name.
# If you have the dnsmasq daemon installed, you'll also have to update
# /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon.
LXC_BRIDGE="lxcbr0"
LXC_ADDR="10.0.3.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="10.0.3.0/24"
LXC_DHCP_RANGE="10.0.3.2,10.0.3.254"
LXC_DHCP_MAX="253"

Selleks, et saaksime konteineritele anda ka sisevõrgu IP, teeme host masina uue võrgusilla mis on kokku sillatud füüsilise võrgu liidesega. Selleks on vaja kindlasti installida järgnev pakett.

apt install bridge-utils

Teeme vajalikud muudatused failis /etc/network/interfaces[3]

auto lo
 iface lo inet loopback
#Kindlasti tähelepanu pöörata eth0 liidesele, neid nimesid enam ei kasutata.
auto br0
 iface br0 inet dhcp
   # Lisa füüsiline eth0 silla koosseisu
   bridge_ports eth0

# Eemalda võrguliidese definitsioon füüsilise võrguliidese jaoks:

#auto eth0
#iface eth0 inet ...

Kui uus võrgusild on valmis, siis tuleb olemasolevad konteinerid sinna ühendada, selleks muuta faili /var/lib/lxc/masinanimi/config.

lxc.network.link=br0

ja kui tahame, et uued masinad ka saaksid ühendatud, siis failis /etc/lxc/default.conf muudame järgneva rea:

lxc.network.link=br0

Selleks, et muutused jõustuksid tuleb teha konteinteritele restart. Tulemuste kontrollimiseks saab kasutada käsku:

brctl show

väljundist näeme, et masinad on uue silla küljes ja ka füüsiline liides(ens3) ka:

bridge name	bridge id		STP enabled	interfaces
br0		8000.525400c464f5	no		ens3
							vethH0QBCN
							vethH42CB7
							vethK8N248
							vethS2KUOK
							vethX0K05X
							vethY7QYSW
lxcbr0		8000.000000000000	no

lxc-ls -f käsuga saab kiiresti üle vaadata ka ip aadressid.

Turvalisus

Väga oluline on meeles pidada, et konteineri turvalisusele peab sama palju tähelepanu pöörama, kui eraldiseisvale füüsilisele masinale. Konteineris olevat tarkvara peab ka uuendama ning silmas pidama elementaarseid turvareegleid.

Kokkuvõte

Puutusin sellega kokku aines VPN, tulemüürid ja ipsec kus oli sellega väga mugav installida erinevaid teenuseid. Tavaliselt kui midagi teenuse installimisel väga katki läks, oli väga kerge uus masin teha ja otsast pihta aluastada. Muidugi tuleb siin suurt tähelepanu pöörata turvalisusele, sest masinat jagavad ju ikkagi ühist kernelit. Linuxi konteinerites on mul väga palju veel juurde õppida. Millest kindasti tuleks rääkida on privileegidega(privileged) ja privileegideta(unprivileged) konteinerid.

Huvtavad lingid, videod

Postitan siia lehed kust veel infot saab

https://www.stgraber.org/ - Stéphane Graber's blog, kes on Linuxi konteinerite põhi tegijaid.

https://linuxcontainers.org/

https://linuxcontainers.org/lxc/getting-started/ kuidas teha konteinereid tava kasutaja alla, ehk unprivileged conteiners ja kuidas on need turvalisemad.

https://www.youtube.com/watch?v=2EwFkOrZ7I8 - Videod kuidas seadistada lXC võrku.

Kasutatud allikad