Mi az a Docker Container? - Tárolja az alkalmazását a Docker használatával



A Docker Container a Virtual Machine könnyű alternatív megoldása alkalmazások létrehozására, telepítésére és futtatására egy konténer belsejében.

Remélem, hogy elolvasta a korábbi blogjaimat Dokkmunkás ahol a Docker alapjait ismertettem. Itt, ebben a Docker Container blogban arról fogok beszélni, hogy mik azok a Docker Containers, és hogyan működik. Leginkább a Docker gyakorlati és használati eseteire fogunk összpontosítani.

Felsoroltam ennek a Docker Container blognak a témáit:





  • Miért van szükségünk dokkoló konténerekre?
  • Hogyan működnek a Docker Containers?
  • A Docker Container használati esetei

Miért van szükségünk dokkoló konténerekre?

Még mindig jól emlékszem, egy projekten dolgoztam. Ebben a projektben a mikroszolgáltatás architektúráját követtük. Azok számára, akik nem tudják, mi a mikroszolgáltatás, ne aggódjon, bemutatom neked.

A mikroszolgáltatások mögött az az elképzelés áll, hogy bizonyos típusú alkalmazások könnyebben felépíthetők és karbantarthatók, amikor kisebb, összeállítható darabokra bontják őket, amelyek együtt működnek. Minden komponenst külön fejlesztenek, és az alkalmazás ekkor egyszerűen az alkotórészeinek összege.



java applet program példák kimenettel

Tekintsük az alábbi példát:

Online vásárlás alkalmazás - Docker konténer - Edureka

A fenti ábrán egy online üzlet található, külön mikrohelyzettel a felhasználói fiókhoz, a termékkatalógushoz, a megrendelések feldolgozásához és a bevásárlókocsikhoz.



Nos, ennek az architektúrának sok előnye van:

  • Még akkor is, ha az egyik mikroszolgáltatása meghiúsul, a teljes alkalmazását ez nagyban befolyásolja.
  • Könnyebb kezelni

Sok más előnye is van, ebben a bejegyzésben nem részletezem a mikroszolgáltatásokat. De hamarosan elő fog állni egy pár blog a mikroszolgáltatásokról is.

Ebben az architektúrában CentOS virtuális gépeket használtunk. Ezeket a virtuális gépeket hosszú szkriptek írásával konfigurálták. Nos, a virtuális gépek konfigurálása nem volt az egyetlen probléma.

Az ilyen alkalmazások fejlesztéséhez több mikroszolgáltatás elindítása szükséges egy gépen. Tehát, ha öt ilyen szolgáltatást indít, akkor öt virtuális gépre van szüksége a gépen. Vegye figyelembe az alábbi ábrát:

A másik probléma elég gyakori, tudom, hogy sokan kapcsolódhatnak hozzá. Az alkalmazás a fejlesztő laptopjában működik, de a tesztelésben és a gyártásban nem. Ennek oka lehet az, hogy nem tartják be a következetes számítási környezetet. Vegye figyelembe az alábbi ábrát:

Ezen kívül sok más probléma is felmerült, de úgy érzem, ezek a problémák elégségesek ahhoz, hogy elmagyarázzam neked a Docker konténerek szükségességét.

Tudja meg, hogy a Docker konténerek jobbak, mint a virtuális gépek

Tehát képzelje el, ha 8 GB RAM-ot adok az összes virtuális gépemnek, és 5 mikroszolgáltatás fut különböző virtuális gépeken. Ebben az esetben ezekhez a virtuális gépekhez 40 GB RAM szükséges. Nos, most megkövetelem, hogy a gépem konfigurációi nagyon magasak legyenek, majdnem 44 GB RAM-nak kell lennie a gazdagépemben. Nyilvánvaló, hogy ez nem fenntartható megoldás egy ilyen architektúrára, mert rengeteg erőforrást pazarolok ide.

Rendben, rengeteg erőforrást kell pazarolnom, de mégis problémát okoz a szoftver szállítási életciklusom (SDLC) következetlensége. Be kell állítanom ezeket a virtuális gépeket tesztben és prod környezetben is. Valahol ebben a folyamatban néhány szoftvert nem frissítettek a tesztkiszolgálón, és a fejlesztők csapata a szoftver frissített verzióját használja. Ez konfliktusokhoz vezet.

Mi van, ha 100 virtuális gépet használok, akkor az egyes virtuális gépek konfigurálása sok időt vesz igénybe, és ugyanakkor hajlamos a hibára is.

Most pedig értsük meg, mi a Docker Container, és hogyan működik, és hogyan oldotta meg a problémámat.

Mi az a Docker konténer?

A Docker egy olyan eszköz, amelyet a konténerek használatával könnyebb létrehozni, telepíteni és futtatni.

Létrehozhat Docker konténereket, ezek a tárolók az esetemben az alkalmazásodhoz vagy a mikroszolgáltatáshoz szükséges összes bináris fájlt és könyvtárat tartalmazzák. Tehát az alkalmazás egy tárolóban van, vagy tárolta az alkalmazást. Most ugyanaz a tároló használható a Test és Prod környezetben.

A Docker Containers könnyű megoldás a virtuális gépek számára, és a gazda operációs rendszert használja. A legjobb az egészben, hogy nem kell előzetesen kiosztania a RAM-ot a Docker Container-hez, ez szükség szerint elveszi. Tehát a Docker Container-rel nem kell aggódnom az erőforrások pazarlása miatt.

Most értsük meg, hogyan működik egy Docker konténer.

Hogyan működik a Docker konténer?

Az alábbi ábra alapvetően a Docker használatának egyik módja. És feltételezem, hogy van ötlete a Docker Image-ről és a Dockerfile-ról.

Srácok, tudom, hogy a diagram kissé összetettnek tűnik, de bízzanak bennem, hogy ez nem ilyen összetett. Az alábbiakban bemutatjuk a diagram magyarázatát, még ezek után is úgy érzi, hogy ezt nehéz megérteni, kommentálhatja kétségeit, ASAP fogok foglalkozni ezekkel a kérdésekkel.

  • A fejlesztő először beírja a projekt kódját egy Docker fájlba, majd egy képet készít a fájlból.
  • Ez a kép a teljes projektkódot tartalmazza.
  • Most futtathatja ezt a Docker Image alkalmazást annyi tároló létrehozásához, amennyit csak akar.
  • Ez a Docker kép feltölthető a Docker hubra (Ez alapvetően a Docker Images felhőalapú tárháza, nyilvános vagy privátként is tarthatja).
  • Ezt a Docker képet a Docker hubon más csapatok, például a QA vagy a Prod húzhatják meg.

Ez nemcsak az erőforrások pazarlását akadályozza meg, hanem arról is gondoskodik, hogy a fejlesztői laptopban lévő számítási környezet más csapatokban is megismétlődjön. Most úgy érzem, nem kell elmondanom, miért van szükségünk Dockerre.

Ez volt az egyik módja a használatának, azt hiszem, kíváncsiak vagytok arra, hogy megtudjátok, hogyan használtam a Dockert a mikroszolgáltatások problémájának megoldására. Hadd adjak áttekintést ugyanerről.

Az alábbiakban bemutatjuk a diagram magyarázatát:

  • Először a Dockerfile-ben írtuk meg az összetett követelményeket.
  • Aztán a GitHubra toltuk.
  • Ezt követően CI szervert (Jenkins) használtunk.
  • Ez a Jenkins szerver lehúzza a Gitről, és felépíti a pontos környezetet. Ezt a Production kiszolgálókon és a Test szervereken is használni fogják.
  • Telepítésre telepítettük (Ez azt jelenti, hogy a szoftvert tesztelés céljából telepíti a szerverekre, mielőtt teljes mértékben telepítené őket a gyártásba.) Környezet a tesztelők számára.
  • Alapvetően pontosan azt fejlesztettük, teszteltük és állítottuk elő a gyártásba.

Valójában igazságos lesz ezt mondani, Docker megkönnyítette az életemet.

Nos, ez volt a cégem története, nézzük meg az Indiana Egyetem esettanulmányát. Hogyan oldotta meg Docker a problémáikat.

Indiana University esettanulmány:

Az Indiana University egy több campusú állami egyetemi rendszer az Egyesült Államokban, Indiana államban.

Probléma nyilatkozat

Egyéni parancsfájlok segítségével telepítették az alkalmazásokat a virtuális gépbe.

Környezetüket a régi Java-alapú alkalmazásokhoz optimalizálták. Növekvő környezetük új termékeket tartalmaz, amelyek nem kizárólag Java alapúak. Annak érdekében, hogy hallgatóik a lehető legjobb élményt nyújthassák, az Egyetemnek meg kellett kezdenie az alkalmazások korszerűsítését.

Az egyetem fejleszteni kívánta az alkalmazások tervezését azáltal, hogy az alkalmazásokhoz mikroszolgáltatás-alapú architektúrára lépett át.

Biztonságra volt szükség a diákok adataihoz, például az SSN-ekhez és a diákok egészségügyi adataihoz.

Megoldás:

Az összes problémát a Docker Data Center (DDC) kezelte, vegye figyelembe az alábbi ábrát:

Docker Trusted Registry - Tárolja a Docker képeket.

UCP (Universal Control Plane) webes felhasználói felület - Segít az egész klaszter kezelésében egyetlen helyről. A szolgáltatásokat az UCP webes felhasználói felületével, a DTR-ben (Docker Trusted Registry) tárolt Docker-képek felhasználásával telepítik.

Az informatikai operátorok csapatai kihasználják az Universal Control Plane-t, hogy a Docker szoftvert telepítsen a gazdagépekre, majd telepítsék az alkalmazásokat anélkül, hogy egy csomó kézi lépést kellene elvégezniük az egész infrastruktúrájuk beállításához.

Az UCP és a DTR integrálódik LDAP szerverükkel, hogy gyorsan hozzáférést biztosítsanak az alkalmazásaikhoz.

Remélem, hogy önök elolvasták az előző blogokat, hogy megtanulják a Docker alapjait.

Most elmagyarázom, hogyan használhatjuk a Docker Compose alkalmazást több tároló alkalmazáshoz.

Docker kézi:

Feltételezem, hogy telepítette a Dockert.Ebben a bejegyzésben fogom használni a Docker Compose alkalmazást, az alábbiakban egy kis bevezetést adtam a Docker Compose-hoz.

Docker írása: Ez egy eszköz a több tárolós Docker alkalmazások meghatározásához és futtatásához. A Docker Compose használatával a Compose fájl segítségével konfigurálhatja az alkalmazás szolgáltatásait. Ezután egyetlen paranccsal létrehozhatja és elindíthatja az összes szolgáltatást a konfigurációjából.

Tegyük fel, hogy több alkalmazás van különböző tárolókban, és mindegyik tároló össze van kapcsolva. Tehát nem akarja ezeket a konténereket egyenként végrehajtani. De ezeket a konténereket egyetlen paranccsal szeretné futtatni. Itt jön be a képbe a Docker Compose. Segítségével több parancs futtatható különböző konténerekben egyetlen paranccsal. azaz dokkoló-komponál.

Példa: Képzelje el, hogy különböző tárolók vannak, az egyik egy webalkalmazást, a másik egy postgres-t, egy másik pedig a redist futtatja egy YAML-fájlban. Ezt hívják docker compose fájlnak, onnan futtathatja ezeket a konténereket egyetlen paranccsal.

Vegyünk még egy példát:

Tegyük fel, hogy blogot szeretnél közzétenni, ehhez CMS-t (Content Management System) fogsz használni, és a wordpress a legszélesebb körben használt CMS. Alapvetően egy tárolóra van szüksége a WordPress számára, és még egy tárolóra van szüksége a MySQL-ként háttérként, ezt a MySQL-tárolót össze kell kapcsolni a wordpress-tárolóval. Szükségünk van még egy tárolóra a Php Myadmin számára, amely összekapcsolódik a MySQL adatbázissal, alapvetően a MySQL adatbázis elérésére szolgál.

Mi lenne, ha a fenti példát gyakorlatilag végrehajtom.

Bevont lépések:

  1. Telepítse a Docker Compose alkalmazást :
  2. Telepítse a WordPress alkalmazást: A hivatalos személyt fogjuk használni WordPress és MariaDB Docker képek.
  3. Telepítse a MariaDB-t: Ez az egyik legnépszerűbb adatbázis-szerver a világon. A MySQL eredeti fejlesztői készítették. A MariaDB nyílt forráskódú szoftverként van kifejlesztve, és relációs adatbázisként SQL felületet biztosít az adatok eléréséhez.
  4. Telepítse a PhpMyAdmin szoftvert: Ez egy PHP-ben írt ingyenes szoftvereszköz, amely a MySQL webes adminisztrációjának kezelésére szolgál.
  5. Hozza létre a WordPress webhelyet:

Lássunk neki!

A Docker Compose telepítése:

Először telepítse a Python Pip programot:

sudo apt-get install python-pip

Most telepítheti a Docker Compose programot:

sudo pip install docker-compose

A WordPress telepítése:

Hozzon létre egy WordPress könyvtárat:

mkdir wordpress

Írja be ezt a wordpress könyvtárat:

cd wordpress /

Ebben a könyvtárban hozzon létre egy Docker Compose YAML fájlt, majd szerkessze a gedit használatával:

sudo gedit docker-compose.yml

Illessze be az alábbi kódsorokat abba a yaml fájlba:

wordpress: image: wordpress links: - wordpress_db: mysql ports: - 8080: 80 wordpress_db: image: mariadb environment: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: mysql ports: - 8181: 80 környezet: MYSQL_USERNAME: gyökér MYSQL_ROOT_PASSWORD: edureka

Tudom, hogy azt akarod, hogy magyarázzam el ezt a kódot, ezért amit teszek, a kód kis részeit veszem át, és elmagyarázom neked, hogy mi történik.

wordpress_db: ... környezet: MYSQL_ROOT_PASSWORD: edureka ...

Ez beállít egy környezeti változót a wordpress_db konténerben, MYSQL_ROOT_PASSWORD néven, a kívánt jelszóval. A MariaDB Docker kép úgy van konfigurálva, hogy az induláskor ellenőrizze ezt a környezeti változót, és gondoskodni fog a DB beállításáról egy gyökér fiókkal, a MYSQL_ROOT_PASSWORD néven megadott jelszóval.

wordpress: ... portok: - 8080: 80 ...

Az első portszám a gazdagép portszáma, a második pedig a tárolóban lévő port. Tehát ez a konfiguráció továbbítja a kéréseket a gazdagép 8080-as portjára a tárolóban található alapértelmezett 80-as webkiszolgáló-portra.

phpmyadmin: image: corbinu / docker-phpmyadmin linkek: - wordpress_db: mysql portok: - 8181: 80 környezet: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Ez megragadja a docker-phpmyadmin programot a közösségi tag corbinu részéről, összekapcsolja a wordpress_db tárolóval a mysql névvel (vagyis a phpmyadmin tároló belsejéből a mysql hosztnévre való hivatkozások továbbításra kerülnek a wordpress_db konténerünkhöz), kiteszi a 80-as portját a gazdarendszert, végül beállít pár környezeti változót a MariaDB felhasználónévvel és jelszóval. Ez a kép nem ragadja meg automatikusan a MYSQL_ROOT_PASSWORD környezeti változót a wordpress_dbcontainer környezetéből, ahogyan a wordpress kép. Valójában le kell másolnunk a MYSQL_ROOT_PASSWORD: edureka sort a wordpress_db konténerből, és a felhasználónevet gyökérre kell állítanunk.

Most indítsa el az alkalmazáscsoportot:

dokkoló-komponál fel -d

Ennyit kell tennie. Hozzáadhat annyi tárolót, amennyit csak szeretne, és tetszés szerint összekapcsolhatja mindet.

Most lépjen a böngészőben a 8080-as portra, a nyilvános IP-címmel vagy a gazdagép nevével, az alábbiak szerint:

helyi gazda: 8080

Töltse ki ezt az űrlapot, és kattintson a WordPress telepítésére.

Miután elkészült, látogassa meg újra a szerver IP-címét (ezúttal a 8181-es portot használva, pl. Localhost: 8181). A phpMyAdmin bejelentkezési képernyő fogadja:

Folytassa a bejelentkezést a YAML fájlban megadott felhasználónév gyökér és jelszó használatával, és böngészhet az adatbázisában. Észre fogja venni, hogy a szerver tartalmaz egy WordPress adatbázist, amely tartalmazza a WordPress telepítéséből származó összes adatot.

Itt fejezem be a Docker Container blogomat. Remélem, élvezték ezt a bejegyzést. Ellenőrizheted egyéb blogok a sorozatban is, amelyek a Docker alapjaival foglalkoznak.

Ha relevánsnak találta ezt a Docker Container blogot, nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Az Edureka DevOps tanúsító tanfolyam segít a tanulóknak szaktudást szerezni a DevOps különféle folyamataiban és eszközeiben, mint például a Báb, a Jenkins, a Docker, a Nagios, az Ansible, a Szakács, a Saltstack és a GIT az SDLC több lépésének automatizálásában.

Van egy kérdésem? Kérjük, említse meg a megjegyzés rovatban, és visszajövök.