Konténer technológiák Flashcards
Mi a konténer?
A konténer egy standard egysége a szoftvernek. Tartalmazza a függőségeket és mindent, ami ahhoz kell, hogy a rendszer tudja futtatni a szoftvert. A container image egy könnyű, önálló és futtatható csomag, ami tartalmaz mindent, ami a futtatáshoz kell. A container imagek docker file-okkal kreálódnak, ami instruckiókat tartalmaz az imagek rétegenkénti létrehozásához.
Szerver VS VM VS Container
VM vs Container
Izoláció a docker szintjén namespaceken keresztül
● A fájlrendszer (mount-table): A folyamat nem látja a gazdagép fájlrendszerét. Minden konténer számára elkészül és csatolódik egy elszigetelt root fájlrendszer, amelyet a container image-ből csatolnak.
● Hálózat: A folyamatnak izolált hálózati vereme van, saját virtuális hálózati interfésszel, IP-címmel és routinggal.
● PID: egy folyamat csak más folyamatokat lát a namspacen belül.
● IPC: processz csak processzekkel kommunikál.
● Cgroup: izolált forrás kapacitások (cpu, memória) ezeket el lehet különíteni.
● User: host userek UID-ja és GID-ja mappelhetőek.
● UTS: containereknek lehet host nevük és domain nevük.
Mit lehet konténerizálni és mit nem
csak Linux és Windows OS, grafikus alkalmazások nehezen konténerizálhatók, de lehetséges. Ha a háttérben kell processzt futtatni akkor nem annyira jó: meg lehet oldani, de nem része a konténer mintának.
docker parancsok
● pull: Ezzel a paranccsal lehúzhatod a Docker Hub-ról a kívánt képet.
● image ls: Listázza az elérhető képeket a helyi gépeden.
● ps: Futó konténerek listázása.
● ps -a: Az összes konténer listázása, beleértve a leálltakat is.
● run: Új konténer indítása egy képből.
● exec: Ezzel a paranccsal egy futó konténeren belül tudsz egy parancsot futtatni.
● stop: Konténer leállítása.
● rm: Leállt konténer eltávolítása.
● rmi: Kép eltávolítása a helyi gépedről.
● network ls: Hálózatok listázása.
Konténer készítésénél
jó base image választása, van bármi függőség?
* Egyéni content/app hozzáadása
* Kapcsolatok a külvilággal:
* kell-e konténeren kívüli adattal dolgozni?
* konténerben nem tárolunk adatokat!
* Hogyan induljon az alkalmazás?
Multikonténer applikációk
pl webalkalmazások, kell adatbázis és a webalkalmazás.
Nagy mennyiségű konténereknél érdemes a Kubernetes-t használni, ami egy sok konténer kezelésére létrejött eszköz.
Kubernetes
Nagy mennyiségű konténereknél érdemes a Kubernetes-t használni, ami egy sok konténer kezelésére létrejött eszköz. Létrejöttét a magas elérhetőség, a skálázhatóság és a Microservices megjelenés okozta. Microservice-nél kicsi részekre bontjuk az alkalmazást, amik mind külön konténerbe kerülhetnek. A magas megbízhatóság azt jelenti, ha egy része kiesik a programnak, annak nem szabad problémát okoznia. Erre nyújt megoldást a Kubernetes:
● Központi koordinációt ad, melyik konténer melyik csomóponton fusson
● Mi legyen, ha egy konténer nem működik?
● Hogyan érik el egymást a különböző csomópontokon lévő konténerek?
● Közös hálózatba csatlakoznak?
Ezeken kívül hosszú távú adatok kezelésére is jó, hálózati volume-ok segítségével. Segít az updatelésben úgy, hogy ne legyen holtidő. Több container futása esetén egyszerre egyet cserélünk ki. A Kubernetes tárolja a konténerek állapotait adatbázisban, új konténer létrehozása esetén a scheduler megmondja melyik csomópontra kerüljön. Az adatbázissal szoros kapcsolatban vannak a kontrollerek, amik check-olják, hogy jó változat van-e tárolva.
API szerver
adminok kezelni tudják a klaszterek működését, modulok kommunikálni tudnak. POD futtatási egységek, több konténer is lehet.