Megosztás a következőn keresztül:


Mi a Docker?

Tipp.

Ez a tartalom egy részlet a .NET-alkalmazásokhoz készült .NET-alkalmazásokhoz készült eBook, .NET Microservices Architecture című eBookból, amely elérhető a .NET Docs-on vagy egy ingyenesen letölthető PDF-fájlként, amely offline módban is olvasható.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

A Docker egy nyílt forráskódú projekt az alkalmazások hordozható, önellátó tárolóként való üzembe helyezésének automatizálására, amely a felhőben vagy a helyszínen futtatható. A Docker egy olyan vállalat , amely előlépteti és fejleszti ezt a technológiát, együttműködve a felhő-, Linux- és Windows-szállítókkal, köztük a Microsofttal.

Diagram showing the places Docker containers can run.

2–2. ábra. A Docker a hibrid felhő minden rétegében üzembe helyezi a tárolókat.

A Docker-tárolók bárhol, a helyszínen, az ügyfél adatközpontjában, egy külső szolgáltatóban vagy a felhőben, az Azure-ban futtathatók. A Docker-lemezképtárolók natív módon futtathatók Linuxon és Windowson. A Windows rendszerképek azonban csak Windows-gazdagépeken futtathatók, a Linux-rendszerképek pedig Linux-gazdagépeken és Windows-gazdagépeken futtathatók (eddig Hyper-V Linux rendszerű virtuális gépen), ahol a gazdagép kiszolgálót vagy virtuális gépet jelent.

A fejlesztők windowsos, linuxos vagy macOS rendszerű fejlesztői környezeteket használhatnak. A fejlesztői számítógépen a fejlesztő egy Docker-gazdagépet futtat, ahol Docker-rendszerképek vannak üzembe helyezve, beleértve az alkalmazást és annak függőségeit. A Linuxon vagy macOS rendszeren dolgozó fejlesztők Linux-alapú Docker-gazdagépet használnak, és csak Linux-tárolókhoz hozhatnak létre lemezképeket. (A macOS-en dolgozó fejlesztők szerkeszthetik a kódot, vagy futtathatják a Docker CLI-t macOS-ről, de az írás időpontjától kezdve a tárolók nem futnak közvetlenül a macOS-en.) A Windowson dolgozó fejlesztők linuxos vagy Windows-tárolókhoz is létrehozhatnak lemezképeket.

A tárolók fejlesztői környezetekben való üzemeltetéséhez és további fejlesztői eszközök biztosításához a Docker a Docker Desktopot Windowshoz vagy macOS-hez használja. Ezek a termékek telepítik a tárolók üzemeltetéséhez szükséges virtuális gépet (a Docker-gazdagépet).

A Windows-tárolók futtatásához kétféle futtatókörnyezet létezik:

  • A Windows Server-tárolók alkalmazáselkülönítést biztosítanak folyamat- és névtérelkülönítési technológiával. A Windows Server-tárolók egy kernelt osztanak meg a tároló gazdagéppel és a gazdagépen futó összes tárolóval.

  • A Hyper-V-tárolók a Windows Server-tárolók által biztosított elkülönítésre terjednek ki azáltal, hogy az egyes tárolókat egy nagy mértékben optimalizált virtuális gépen futtatják. Ebben a konfigurációban a tároló gazdagép kernele nincs megosztva a Hyper-V-tárolókkal, ami jobb elkülönítést biztosít.

A tárolók lemezképei ugyanúgy jönnek létre, és ugyanúgy működnek. A különbség az, hogy a tároló hogyan jön létre a Hyper-V tárolót futtató rendszerképből, további paramétert igényel. További részletekért lásd: Hyper-V-tárolók.

Docker-tárolók összehasonlítása virtuális gépekkel

A 2–3. ábra a virtuális gépek és a Docker-tárolók összehasonlítását mutatja be.

Virtual Machines Docker-tárolók
Diagram showing the hardware/software stack of a traditional VM. Diagram showing the hardware/software stack for Docker containers.
A virtuális gépek közé tartozik az alkalmazás, a szükséges kódtárak vagy bináris fájlok, valamint egy teljes vendég operációs rendszer. A teljes virtualizáláshoz több erőforrásra van szükség, mint a tárolókra. A tárolók tartalmazzák az alkalmazást és annak minden függőségét. Az operációsrendszer-kernelt azonban más tárolókkal is megosztják, amelyek elkülönített folyamatként futnak a gazda operációs rendszer felhasználói területén. (Kivéve a Hyper-V-tárolókat, ahol minden tároló tárolónként egy speciális virtuális gépen belül fut.)

2–3. ábra. Hagyományos virtuális gépek összehasonlítása Docker-tárolókkal

A virtuális gépek esetében három alapréteg található a gazdagépkiszolgálón, alulról felfelé: infrastruktúra, gazdagép operációs rendszere és hipervizor, valamint azon felül, hogy minden virtuális gép saját operációs rendszerrel és minden szükséges kódtárval rendelkezik. A Docker esetében a gazdakiszolgáló csak az infrastruktúrával és az operációs rendszerrel rendelkezik, és ezen felül a tárolómotor, amely elkülönítve tartja a tárolót, de megosztja az operációs rendszer alapszolgáltatásait.

Mivel a tárolók sokkal kevesebb erőforrást igényelnek (például nincs szükségük teljes operációs rendszerre), könnyen üzembe helyezhetők, és gyorsan elindulnak. Ez lehetővé teszi, hogy nagyobb sűrűségű legyen, ami azt jelenti, hogy több szolgáltatást futtathat ugyanazon a hardveregységen, ezáltal csökkentve a költségeket.

Az ugyanazon a kernelen való futtatás mellékhatásaként kevesebb elkülönítést kap, mint a virtuális gépek.

A rendszerkép fő célja, hogy a környezet (függőségek) azonos legyen a különböző üzemelő példányok között. Ez azt jelenti, hogy hibakeresést végezhet a gépen, majd üzembe helyezheti egy másik, garantált környezettel rendelkező gépen.

A tárolólemezképek egy alkalmazás vagy szolgáltatás csomagolásának és megbízható és reprodukálható üzembe helyezésének módjai. Azt mondhatjuk, hogy a Docker nem csak technológia, hanem filozófia és folyamat is.

A Docker használatakor a fejlesztők nem fogják hallani a következőt: "Működik a gépemen, miért nem éles környezetben?" Egyszerűen azt mondhatják, hogy "Dockeren fut", mert a csomagolt Docker-alkalmazás bármilyen támogatott Docker-környezetben végrehajtható, és úgy fut, ahogyan az összes üzembe helyezési célon (például Dev, QA, előkészítés és éles környezet) tervezték.

Egy egyszerű analógia

Talán egy egyszerű analógia segíthet megragadni a Docker alapvető fogalmát.

Térjünk vissza az 1950-hez egy pillanatra. Nem voltak szófeldolgozók, és a fénymásolókat mindenhol használták (egyfajta).

Tegyük fel, hogy ön a felelős azért, hogy igény szerint gyorsan kibocsátsa a levélkötegeket, hogy valódi papír és boríték használatával küldje el őket az ügyfeleknek, hogy fizikailag az egyes ügyfelek címére érkezhessenek (akkor még nem volt e-mail).

Egy bizonyos ponton rájön, hogy a betűk csak egy nagy bekezdéskészlet összetétele, amelyeket a levél céljának megfelelően kiválasztunk és elrendezünk, így kidolgozunk egy rendszert, amely gyorsan kiadja a leveleket, és arra számít, hogy nagy emelést kap.

A rendszer egyszerű:

  1. Első lépésként egy sor átlátszó lapból áll, amelyek mindegyike egy-egy bekezdést tartalmaz.

  2. Ha betűkészletet szeretne kibocsátani, jelölje ki a szükséges bekezdéseket tartalmazó lapokat, majd verje össze és igazítsa őket, hogy azok jól nézzenek ki és olvashatók legyenek.

  3. Végül helyezze a készletet a fénymásolóba, és nyomja le a start billentyűt, hogy annyi betűt állítson elő, amennyi szükséges.

Az egyszerűsítés tehát a Docker alapgondolata.

A Dockerben minden réteg azokat a módosításokat jelenti, amelyek a fájlrendszerben egy parancs végrehajtása, például egy program telepítése után következnek be.

Így amikor a réteg másolása után "megtekinti" a fájlrendszert, a program telepítésekor megjelenik a rétegben lévő összes fájl.

A rendszerképek olyan kiegészítő írásvédett merevlemeznek tekinthetők, amely készen áll a "számítógépre" való telepítésre, ahol az operációs rendszer már telepítve van.

Hasonlóképpen a tárolót "számítógépnek" is tekintheti, amelyen telepítve van a lemezkép merevlemeze. A tároló a számítógéphez hasonlóan be- és kikapcsolható.