Különbség a Docker képek és a konténerek között

1. Áttekintés

A Docker az alkalmazások egyszerű létrehozásának, telepítésének és futtatásának eszköze. Ez lehetővé teszi számunkra, hogy az összes függőséggel együtt csomagoljuk az alkalmazásokat, és ezeket külön csomagként terjesszük. A Docker garantálja, hogy alkalmazásunk minden Docker-példányon ugyanúgy fog futtatni.

Amikor elkezdjük használni a Dockert, vannak két fő fogalom tisztában kell lennünk - képek és konténerek.

Ebben az oktatóanyagban megtudhatjuk, hogy mik ők és miben különböznek egymástól.

2. Docker Images

A kép egy fájl, amely egy csomagolt alkalmazást képvisel a helyes futtatáshoz szükséges összes függőséggel együtt. Más szavakkal mondhatnánk, hogy a A Docker kép olyan, mint egy Java osztály.

A képek rétegsorozatként épülnek fel. A rétegek egymásra vannak szerelve. Mi az a réteg? Egyszerűen fogalmazva: egy réteg kép.

Tegyük fel, hogy egy Hello World Java alkalmazás Docker képét szeretnénk létrehozni. Az első dolog, amin gondolkodnunk kell, mire van szükségünk alkalmazásunknak.

Első lépésként Java alkalmazásról van szó, ezért szükségünk lesz JVM-re. Rendben, ez könnyűnek tűnik, de mi kell a JVM futtatásához? Operációs rendszerre van szüksége. Ebből kifolyólag, a Docker képünkön lesz egy operációs rendszer réteg, egy JVM és egy Hello World alkalmazás.

A Docker egyik fő előnye a nagy közösség. Ha egy képre szeretnénk építeni, akkor elmehetünk a Docker Hubba, és megkereshetjük, hogy elérhető-e a szükséges kép.

Tegyük fel, hogy egy adatbázist akarunk létrehozni a PostgreSQL adatbázis használatával. Nem kell semmiből új PostgreSQL képet létrehoznunk. Csak a Docker Hubba megyünk, keresünk postgres, amely a PostgresSQL hivatalos Docker képneve, válassza ki a szükséges verziót, és futtassa azt.

Minden képet, amelyet a Docker Hubból hozunk létre vagy hozunk le, a fájlrendszerünkben tárolják, és a nevével és címkéjével azonosítják. Az is lehet képazonosítójával azonosítva.

Használni a dokkoló képek parancsot, megtekinthetjük a fájlrendszerünkben rendelkezésre álló képek listáját:

$ docker images REPOSITORY CÍMKÉP KÉP LÉTREHOZOTT MÉRET postgres 11.6 d3d96b1e5d48 4 héttel ezelőtt 332 MB mongo legújabb 9979235fc504 6 héttel ezelőtt 364 MB rabbitmq 3-management 44c4867e4a8b 8 héttel ezelőtt 2 hónappal ezelőtt 757 MB flyway / flyway 6.0.8 0c11020ffd69 3 hónappal ezelőtt 247 MB ​​java 8-jre e44d62cf8862 3 évvel ezelőtt 311 MB

3. Docker Images futtatása

Egy kép futtatása a dokkoló futás parancsot a kép nevével és címkéjével. Tegyük fel, hogy a postgres 11.6 képet szeretnénk futtatni:

docker run -d postgres: 11.6

Figyelem, hogy megadtuk a -d választási lehetőség. Ez megmondja Dockernek, hogy futtassa a képet a háttérben - más néven leválasztott módnak.

Használni a dokkoló ps parancsot ellenőrizhetjük, hogy fut-e a képünk, ezt a parancsot kell használnunk:

$ docker ps KONTÉNER ID KÉP PARANCS LÉTREHOZOTT ÁLLAPOT PORTS NEVEK 3376143f0991 postgres: 11.6 "docker-entrypoint.s…" 3 perccel ezelőtt 3 perccel fel 3 perc 5432 / tcp tender_heyrovsky

Figyelje meg a KONTÉNER ID a fenti kimenetben. Vessünk egy pillantást arra, hogy mi a konténer és hogyan kapcsolódik egy képhez.

4. Docker konténerek

A tároló egy képpéldány. Minden tároló azonosítható az azonosítója alapján. Visszatérve a Java fejlesztési analógiánkra, azt mondhatnánk a tároló olyan, mint egy osztály példánya.

A Docker hét állapotot határoz meg egy konténer számára: létre, újraindítás, futás, eltávolítása, szünetelt, kilépett, és halott. Ezt fontos tudni. Mivel a tároló csak a kép egy példánya, nem kell futnia.

Most gondolkodjunk újra a fuss parancsot láttuk fent. Mondtuk, hogy képek futtatására használják, de ez nem teljesen pontos. Az igazság az, hogy a fuss parancs szokott teremt és Rajt a kép új tárolója.

Az egyik nagy előny, hogy a konténerek olyanok, mint a könnyű virtuális gépek. Viselkedésük teljesen elszigetelt egymástól. Ez azt jelenti, hogy több tárolót futtathatunk ugyanabból a képből, amelyek mindegyike különböző állapotban van, különböző adatokkal és különböző azonosítókkal.

Nagy előny, hogy egyszerre több tárolót futtathat ugyanabból a képből, mert nagyszerű lehetőséget kínál az alkalmazások méretezésére. Gondoljunk például a mikroszolgáltatásokra. Ha minden szolgáltatás Docker-képként van csomagolva, akkor ez azt jelenti, hogy igény szerint új szolgáltatások tárolóként is telepíthetők.

5. A konténerek életciklusa

Korábban említettük a konténer hét állapotát. Most nézzük meg, hogyan használhatjuk a dokkmunkás parancssori eszköz a különböző életciklus-állapotok feldolgozásához.

Új konténer indításához szükségünk van rá teremt meg aztán Rajt azt. Ez azt jelenti, hogy a futtatás előtt át kell mennie a létrehozási állapoton. Ezt úgy tehetjük meg, hogy kifejezetten létrehozzuk és elindítjuk a tárolót:

docker konténer létrehozása: docker konténer indítása 

Vagy ezt könnyen megtehetjük a fuss parancs:

dokkoló futás:

Szüneteltethetünk egy futó tárolót, majd újra működési állapotba helyezhetjük:

docker szünet docker szünet 

A szüneteltetett tároló állapotában a „Szüneteltetett” állapot jelenik meg, amikor ellenőrizzük a folyamatokat:

$ docker ps KONTÉNER ID KÉP PARANCS LÉTREHOZOTT ÁLLAPOT PORTS NEVEK 9bef2edcad7b postgres: 11.6 "docker-entrypoint.s…" 5 perccel ezelőtt 4 perccel fel (Szüneteltetve) 5432 / tcp tender_heyrovsky

Megállíthatunk egy futó konténert is, majd újra futtathatjuk:

docker stop docker start 

És végül eltávolíthatunk egy tartályt:

dokkoló konténer rm 

Csak a leállított vagy létrehozott állapotban lévő tárolókat lehet eltávolítani.

A Docker parancsokkal kapcsolatos további információk a Docker parancssori kézikönyvében találhatók.

6. Következtetés

Ebben a cikkben megvitattuk a Docker képeit és tárolóit, és azok különbségeit. A képek leírják az alkalmazásokat és azok futtatásának módját. A tárolók azok a képpéldányok, ahol ugyanazon kép több tárolója futtatható, mindegyik más állapotban.

Beszéltünk a konténerek életciklusáról, és megtanultuk az alapvető parancsokat a kezelésükhöz.

Most, hogy ismerjük az alapokat, itt az ideje, hogy többet megtudjunk a Docker izgalmas világáról, és elkezdjük bővíteni ismereteinket!


$config[zx-auto] not found$config[zx-overlay] not found