Sziasztok!
Szubjektív véleményeket szeretnék megtudni a különböző konténer megoldások használóitól. Ki, mit választott és miért? Minden ami pro és kontra, de valóban a használóitól szeretném megtudni, nem pedig a szomszéd Pistike hallomásait.
Miért is? Szóval mostanában játszadozom a konténerekkel (itthon és felhőben is) és annyi féle van, hogy Dunát lehet vele rekeszteni. A Docker például nekem nem esik kézre így most az nspawn/mkosi-val készítek konténereket, eddig megelégedéssel, de gondolom nem véletlen, hogy ennyi különböző megoldás van. Van hátránya élesben nspawn konténer(eke)t nyílvánosan elérhetővé tenni?
- 377 megtekintés
Hozzászólások
Nálam docker, illetve a jövőben várhatóan podman. Ezt a szteroidokkal feltuningolt chroot-ot (nspawn) még nem néztem...
- A hozzászóláshoz be kell jelentkezni
A podmant-t nem veséztem ki a választás közben, „nafogdmegasörömmajdmostmegnézem” :)
Az nspawnban az overlay ami megfogott. Van egy alapkép amit overlayen keresztül felszerelek egy új konténerbe, ebben a konténerben csak a változások lesznek eltárolva, az alapkép felhasználható további konténerek létrehozására. Építettem egy nagyon minimális alaprendszert ami mindennek az alapja. A többi konténerben pedig csak az kerül eltárolásra ami az ő futásához még kell az alapon felül. Helyspórolós, eddig meg vagyok vele elégedve. Tud valamelyik még ilyet?
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
Docker, OCI
- A hozzászóláshoz be kell jelentkezni
lxc overlay konténer:
lxc-clone -o name -n newname -B overlayfs -s
Ez még jóval docker előtti módszer. Ha az eredeti konténer rootfs loop mountolt squashfs, akkor nagyon helytakarékos.
- A hozzászóláshoz be kell jelentkezni
Az lxc-n belegabalyodtam a hálózatba. Igaz, nem is fordítottam nagyobb figyelmet rá, mert az nspawn-ban elsőre sikerült minden. Mondjuk az lxc dokumentációban keresni kell ezt az overlay lehetőséget, míg az nspawn doksik elég hamar, már a kezdetekkor erre vezetnek. Egész konkrétan csak így, hogy megemlítetted és célirányosan keresem, így kaptam rá találatot az nspawn leírások amikbe belebotlottam pedig kis híján ezzel kezdték. Jó ez, további input :) lesz mit olvasgatnom.
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
Én LXD/LXC (Ubuntu) konténereket használok webes megoldásokhoz, illetve Libvirt/LXC-t SLES alatt.
Mindkettővel produktív üzemben mennek nagy terhelésű rendszerek, nginx/PHP-FPM/MySQL/Memcached/Tomcat stb illetve igazi SAP ERP nagy (4-5T) adatbázissal, jelentős erőforrásigénnyel.
Mindkét megoldás teljes OS-t ad, tehát belülről úgy néz ki, mint egy VM, csak gyorsabb, és a telepítése picit trükkös.
- A hozzászóláshoz be kell jelentkezni
Mit takar a trükkös telepítés?
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
Mit takar a trükkös telepítés?
Annyi a különbség, hogy itt értelemszerűen nem egy normális OS install-t viszünk végig interaktívan.
LXD-nél az "lxc launch" + konténer beindítása után konzolról belépve kell beállítani a hálózatot (pl. netplan), vagy előtte belemásolni a rootfs-be a konfigfilet.
SLES-nél pedig nekünk kell előkészíteni a rootfs-t, ott még annyi sincs mint LXD-ben hogy lehúzol egy alap image-t. Én így csinálom:
#!/bin/bash
# parameterkent az uj hostnevet kell atadni
ROOTFS=/srv/lxc/$1
# Atmasoljuk a hostrol a repository beallitasokat
mkdir -p $ROOTFS/etc
cp -rp /etc/zypp $ROOTFS/etc
# Megfrissitjuk a repo-kat (always trust-ot kell mindig valaszolni)
zypper --root $ROOTFS refresh
# Minimal install
zypper --root $ROOTFS install -t pattern minimal_base
zypper --root $ROOTFS install yast2 yast2-network
# Nehany init
echo "ttyS0" >> $ROOTFS/etc/securetty
echo "root:xxxxxxxxxxxxx" | chpasswd -R $ROOTFS
Ezután már beindul a konténer; konzol, network, update és mehet a konfigurálás már SSH-n.
Nyilván itt nem applikációs konténerről van szó, tehát pl. a host egyik interfészét belerakjuk egy bridge-be, amit elér az LXC, így kap egy rendes IP-t a fizikai hálózatról, semmi NAT meg portforward bohóckodás.
- A hozzászóláshoz be kell jelentkezni
Ez hasonlít az mkosi-s alapképhez! Az igazság az, hogy lusta dög vagyok és nem ment elsőre az lxd hálózat. Előtte már csináltam egyetlen egy konténert a gentoo alaprendszer fordításhoz amit nspawnal indítottam és mivel ott a hálózat gyakorlatilag a systemd hálózati konfigurációkkal megy, plusz korábban építettem kíváncsiságból egy routert banana router boardra -kizárólag systemd hálózatkezeléssel- nem is keresgéltem tovább az lxd irányában. A scripted a telepítéshez nem bonyolultabb az mkosi beállításánál, köszönöm, hogy megosztottad. Jó látni, hogy valójában a lustaságom miatt nem foglalkoztam eleget más megoldással...
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
Érdemes pici időt rászánni és küzdeni vele, mert ha sikerül jól összelőni, nagyon stabil és erős cuccok ezek, bátran lehet rápakolni éles dolgokat.
LXD-nél a hálózat címszavakban, ahogy én csinálom:
1. Létrehozni hoston a bridge-t
/etc/network/interfaces:
auto br2
iface br2 inet static
bridge_ports eno2 (melyik host ethernet kerül bele)
bridge_fd 0
bridge_maxwait 0
address x.x.x.x
netmask 255.255.255.0
Értelemszerűen a sima ethernet port konfigját ki kell venni.
2. LXD-nek megadni ezt a bridge eszközt.
devices:
eth2:
name: eth2
nictype: bridged
parent: br2
type: nic
Innentől úgy viselkedik a konténer eth2 interfésze, mintha a host "eno2" interfészével együtt egy közös switchbe lenne kötve, tehát ha van a host hálózatán egy DHCP szerver, akkor a konténer is tud kérni onnan IP-t stb.
- A hozzászóláshoz be kell jelentkezni
Hmmm...
Nekem a Gentoo és az Arch Wiki az első ha valamit be kell állítanom, azok alapján mindig sikeresen elkonfiguráltam a hálózatot :) Nem tudnám megmondani, hogy mit-hova-miért-hogyan, de a végére általában egy teljesen használhatatlan hálózat lett az eredmény, mert hol ez, hol az nem ment többé :) Mintha ez:„Értelemszerűen a sima ethernet port konfigját ki kell venni.” nem lett volna meg, bár nem most volt... No kipróbálom ezt is! Köszönöm!
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
"Mindkét megoldás teljes OS-t ad"
Azért ez nem teljesen így van.
Linux Containers (LXC) is an operating-system-level virtualization method for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel.
- A hozzászóláshoz be kell jelentkezni
Nyilván, persze, pongyolán fogalmaztam. Úgy értettem, hogy pl. a docker-féle megoldástól alapvetően eltér, ahol szinte csak az applikáció fut a konténerben.
- A hozzászóláshoz be kell jelentkezni