Kaj je Docker Container? - Kontejnerite svojo aplikacijo z Dockerjem



Docker Container je lahka alternativna rešitev za virtualni stroj za ustvarjanje, uvajanje in zagon aplikacij znotraj vsebnika.

No, upam, da ste prebrali moje prejšnje bloge Docker kjer sem opisal osnove Dockerja. Tukaj bom v tem blogu o Docker Containerju razpravljal o tem, kaj so Docker Containers in kako deluje. Večinoma se bomo osredotočili na praktične primere in primere uporabe Dockerja.

V tem blogu Docker Container sem naštel teme:





  • Zakaj potrebujemo docker posode?
  • Kako delujejo Docker zabojniki?
  • Primeri uporabe zaboja Docker

Zakaj potrebujemo docker posode?

Še vedno se ga dobro spominjam, delal sem na projektu. V tem projektu smo sledili arhitekturi mikro storitev. Za tiste, ki ne veste, kaj je mikroservis, ne skrbite, predstavil vam ga bom.

Ideja mikrostoritev je, da je nekatere vrste aplikacij lažje zgraditi in vzdrževati, če jih razstavimo na manjše sestavljive dele, ki delujejo skupaj. Vsaka komponenta se razvije ločeno, aplikacija pa je potem preprosto vsota sestavnih komponent.



Upoštevajte spodnji primer:

Aplikacija za spletno nakupovanje - Docker Container - Edureka

V zgornjem diagramu je spletna trgovina z ločenimi mikro storitvami za uporabniški račun, katalog izdelkov, obdelavo naročil in nakupovalnimi vozički.



No, ta arhitektura ima veliko prednosti:

  • Tudi če katera od vaših mikro storitev odpove, vaša celotna aplikacija v veliki meri ne vpliva.
  • Lažje je upravljati

Obstajajo tudi številne druge ugodnosti, v tem prispevku se ne bom spuščal v podrobnosti o mikro storitvah. Kmalu pa bom pripravil tudi nekaj blogov na mikroservisih.

V tej arhitekturi smo uporabljali navidezne stroje CentOS. Ti navidezni stroji so bili konfigurirani s pisanjem dolgih skriptov. No, konfiguracija teh VM-jev ni bila edina težava.

Razvoj takšnih aplikacij zahteva zagon več mikro storitev v enem stroju. Torej, če začenjate pet teh storitev, potrebujete pet VM-jev na tej napravi. Upoštevajte spodnji diagram:

Druga težava je precej pogosta, vem, da se jo lahko veliko povežete. Aplikacija deluje v prenosnem računalniku za razvijalce, ne pa tudi pri testiranju ali izdelavi. To je lahko posledica neupoštevanja doslednega računalniškega okolja. Upoštevajte spodnji diagram:

dodatek dveh številk v javi

Poleg tega je bilo še veliko drugih težav, vendar menim, da so te težave dovolj, da vam razložim potrebo po Docker Containers.

Spoznajte, kako so posodice Docker boljše od navideznih strojev

Torej, predstavljajte si, če dajem 8 GB RAM-a vsem svojim VM-jem in imam 5 mikroservisov, ki se izvajajo na različnih virtualnih strojih. V tem primeru bodo ti VM-ji potrebovali 40 GB RAM-a. No, zdaj zahtevam, da so konfiguracije mojega gostiteljskega računalnika zelo visoke, v mojem gostiteljskem računalniku bi moralo biti skoraj 44 GB RAM-a. Očitno to ni trajnostna rešitev za takšno arhitekturo, ker tukaj zapravljam veliko sredstev.

V redu, imam veliko virov, ki jih lahko zapravim, vendar imam kljub temu neskladnost v življenjskem ciklu dobave programske opreme (SDLC). Te VM-je moram konfigurirati tako v testnem kot tudi v okolju izdelkov. Nekje v tem procesu nekaj programske opreme ni bilo posodobljeno na testnem strežniku, skupina razvijalcev pa uporablja posodobljeno različico programske opreme. To vodi v konflikte.

Kaj če uporabim 100 VM-jev, potem konfiguriranje vsakega VM-ja traja veliko časa, hkrati pa je tudi nagnjeno k napakam.

Zdaj pa razumimo, kaj je Docker Container in kako deluje in kako je rešil moj problem.

Kaj je Dockerjev zabojnik?

Docker je orodje za lažje ustvarjanje, uvajanje in zagon aplikacij z uporabo vsebnikov.

Lahko ustvarite Dockerjeve vsebnike, ti vsebniki bodo vsebovali vse binarne datoteke in knjižnice, ki so v mojem primeru potrebne za vašo aplikacijo ali mikrostoritev. Torej je vaša aplikacija prisotna v vsebniku ali pa ste jo vsebinirali. Zdaj se lahko ta isti vsebnik uporablja v okolju Test and Prod.

Docker Containers so lahka rešitev za navidezne stroje in uporabljajo gostiteljski OS. Najboljši del je, da vam ni treba predhodno dodeliti RAM-a zabojniku Docker, saj ga bo vzel po potrebi. Torej, pri Docker Containerju mi ​​ni treba skrbeti za zapravljanje virov.

Zdaj razumemo, kako deluje Docker Container.

Kako deluje Docker Container?

Spodnji diagram je v bistvu način uporabe Dockerja. Predvidevam, da imate idejo o Docker Image in Dockerfile.

Fantje, vem, da je diagram videti nekoliko zapleten, a verjemite mi, da ni tako zapleten. Spodaj je razlaga diagrama, tudi po tem se vam zdi težko razumeti, lahko komentirate svoj dvom, ta vprašanja bom obravnaval Kmalu.

  • Razvijalec bo najprej zapisal kodo projekta v Dockerjevo datoteko in nato iz te datoteke zgradil sliko.
  • Ta slika bo vsebovala celotno kodo projekta.
  • Zdaj lahko to Dockerjevo sliko zaženete, da ustvarite toliko vsebnikov, kot želite.
  • To Dockerjevo sliko je mogoče naložiti v Dockerjevo vozlišče (v bistvu je shramba v oblaku za vaše Dockerjeve slike, lahko jo shranite javno ali zasebno).
  • To sliko Dockerja na Dockerjevem vozlišču lahko potegnejo druge ekipe, kot sta QA ali Prod.

To ne samo, da preprečuje zapravljanje virov, ampak tudi zagotavlja, da se računalniško okolje, ki je v prenosnem računalniku razvijalca, ponovi tudi v drugih skupinah. Zdaj čutim, da vam ni treba povedati, zakaj potrebujemo Dockerja.

To je bil en način, da ga uporabim, predvidevam, da vas zanima, kako sem z Dockerjem rešil svoj problem z mikro storitvami. Naj vam dam pregled o istem.

Spodaj je razlaga diagrama:

  • Najprej smo v Dockerfile zapisali zapletene zahteve.
  • Nato smo ga potisnili na GitHub.
  • Po tem smo uporabili strežnik CI (Jenkins).
  • Ta strežnik Jenkins ga bo potegnil iz Gita in zgradil natančno okolje. To se bo uporabljalo v produkcijskih strežnikih in testnih strežnikih.
  • Uvedli smo ga v uprizoritvena (nanaša se na razmestitev vaše programske opreme na strežnike za namene testiranja, preden so jih v celoti uvedli v produkcijo). Okolja za preizkuševalce.
  • V bistvu smo natančno to, kar smo imeli pri razvoju, preizkušanju in postavitvi v proizvodnjo.

Pravzaprav bo pošteno reči, da mi je Docker olajšal življenje.

No, to je bila zgodba mojega podjetja, poglejmo primer študije Univerze v Indiani. Kako je Docker rešil njihove težave.

Študija primera na univerzi v Indiani:

Univerza Indiana je sistem univerzitetnih javnih univerz v državi Indiana v ZDA.

Izjava o težavi

Za namestitev aplikacij v VM so uporabljali skripte po meri.

Njihovo okolje je bilo optimizirano za njihove stare programe, ki temeljijo na Javi. Njihovo rastoče okolje vključuje nove izdelke, ki ne temeljijo samo na javi. Da bi svojim študentom omogočili čim boljšo izkušnjo, je univerza morala začeti posodabljati aplikacije.

Univerza je želela izboljšati način oblikovanja aplikacij s prehodom na arhitekturo, ki temelji na mikro storitvah.

Varnost je bila potrebna za podatke študentov, kot so SSN in podatki o zdravstvenem stanju študentov.

Rešitev:

Vse težave je rešil Docker Data Center (DDC), upoštevajte spodnji diagram:

Dockerjev zaupanja vreden register - Shrani Dockerjeve slike.

Spletni uporabniški vmesnik UCP (Universal Control Plane) - Pomaga pri upravljanju celotne skupine z enega mesta. Storitve se uvedejo s spletnim uporabniškim vmesnikom UCP z uporabo Dockerjevih slik, ki so shranjene v DTR (Docker Trusted Registry).

Ekipe IT-služb izkoristijo Universal Control Plane, da na gostiteljih zagotovijo programsko opremo Docker, ki je nameščena, nato pa uvedejo svoje aplikacije, ne da bi morali narediti kup ročnih korakov za nastavitev vse svoje infrastrukture.

UCP in DTR se integrirata s svojim strežnikom LDAP za hiter dostop do svojih aplikacij.

Upam, da ste prebrali prejšnje bloge, da bi se naučili osnov Dockerja.

Zdaj vam bom razložil, kako lahko Docker Compose uporabljamo za več vsebnike.

sol proti kuharju proti lutki

Docker Hands-On:

Predvidevam, da ste namestili Docker.V tej objavi bom uporabil Docker Compose, spodaj sem dal majhen uvod v Docker Compose.

Docker Compose: Je orodje za definiranje in zagon Dockerjevih aplikacij z več vsebniki. Z Docker Compose lahko z datoteko Compose konfigurirate storitve svoje aplikacije. Nato lahko z enim samim ukazom iz svoje konfiguracije ustvarite in zaženete vse storitve.

Recimo, da imate več aplikacij v različnih vsebnikih in so vsi ti vsebniki povezani med seboj. Torej ne želite izvajati vsakega od teh vsebnikov enega za drugim. Toda te zabojnike želite zagnati z enim samim ukazom. Tu nastopi Docker Compose. Z njim lahko z enim ukazom zaženete več aplikacij v različnih vsebnikih. to je docker-compose up.

Primer: Predstavljajte si, da imate v datoteki YAML različne vsebnike, enega, ki izvaja spletno aplikacijo, drugega pa postgres in drugega, ki izvaja redis. To se imenuje datoteka za sestavljanje dockerja, od tam lahko te vsebnike zaženete z enim samim ukazom.

Vzemimo še en primer:

Recimo, da želite objaviti spletni dnevnik, za kar boste uporabili CMS (Content Management System), Wordpress pa je najpogosteje uporabljen CMS. V bistvu potrebujete en vsebnik za WordPress in še en vsebnik kot MySQL za zadnji del, da mora biti vsebnik MySQL povezan s vsebnikom wordpress. Prav tako potrebujemo še en vsebnik za Php Myadmin, ki bo povezan z bazo podatkov MySQL, v bistvu se uporablja za dostop do baze podatkov MySQL.

Kako pa je, da zgoraj navedeni primer izvedem praktično.

Vključeni koraki:

  1. Namestite Docker Compose :
  2. Namestite WordPress: Uporabili bomo uradno WordPress in MariaDB Slike Dockerja.
  3. Namestite MariaDB: Je eden najbolj priljubljenih strežnikov baz podatkov na svetu. Izdelali so ga prvotni razvijalci MySQL. MariaDB je razvit kot odprtokodna programska oprema in kot relacijska baza podatkov ponuja vmesnik SQL za dostop do podatkov.
  4. Namestite PhpMyAdmin: To je brezplačno programsko orodje, napisano v PHP, namenjeno upravljanju MySQL prek spleta.
  5. Ustvari spletno mesto WordPress:

Začnimo!

Namesti Docker Compose:

Najprej namestite Python Pip:

sudo apt-get namestite python-pip

Zdaj lahko namestite Docker Compose:

sudo pip namestite docker-compose

Namestite WordPress:

Ustvarite imenik wordpress:

mkdir wordpress

Vnesite ta imenik wordpress:

cd wordpress /

V tem imeniku ustvarite datoteko Docker Compose YAML, nato jo uredite s pomočjo gedit:

sudo gedit docker-compose.yml

V to datoteko yaml prilepite spodnje vrstice kode:

wordpress: image: wordpress povezave: - wordpress_db: mysql vrata: - 8080: 80 wordpress_db: image: mariadb okolje: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin povezave: - wordpress_db: mysql vrata: - 8181: 80 MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Vem, da želite, da razložim to kodo, zato bom vzela majhne dele te kode in vam razložila, kaj se dogaja.

wordpress_db: ... okolje: MYSQL_ROOT_PASSWORD: edureka ...

S tem boste nastavili spremenljivko okolja znotraj vsebnika wordpress_db, imenovano MYSQL_ROOT_PASSWORD, z želenim geslom. Slika MariaDB Docker je nastavljena tako, da ob zagonu preveri to spremenljivko okolja in bo poskrbela za nastavitev DB-ja s korenskim računom z geslom, definiranim kot MYSQL_ROOT_PASSWORD.

wordpress: ... vrata: - 8080: 80 ...

Prva številka vrat je številka vrat na gostitelju, druga številka vrat pa je vrata znotraj vsebnika. Torej, ta konfiguracija posreduje zahteve na vratih 8080 gostitelja na privzeta vrata spletnega strežnika 80 znotraj vsebnika.

phpmyadmin: slika: corbinu / docker-phpmyadmin povezave: - wordpress_db: vrata mysql: - 8181: 80 okolje: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Ta zagrabi docker-phpmyadmin s strani člana skupnosti corbinu, ga poveže z našim vsebnikom wordpress_db z imenom mysql (kar pomeni, da se sklici na ime gostitelja mysql znotraj vsebnika phpmyadmin posredujejo v naš vsebnik wordpress_db), izpostavlja svoja vrata 80 na vratih 8181 gostiteljski sistem in na koncu z uporabniškim imenom in geslom MariaDB nastavi nekaj spremenljivk okolja. Ta slika samodejno ne zajema spremenljivke okolja MYSQL_ROOT_PASSWORD iz okolja wordpress_dbcontainer, kot to počne slika WordPress. Pravzaprav moramo kopirati vrstico MYSQL_ROOT_PASSWORD: edureka iz vsebnika wordpress_db in uporabniško ime nastaviti na root.

Zdaj zaženite aplikacijsko skupino:

docker-compose up -d

To je vse, kar morate storiti. Na ta način lahko dodate poljubno veliko vsebnikov in jih poljubno povežete.

Zdaj v brskalniku pojdite na vrata 8080 z uporabo vašega javnega IP-ja ali imena gostitelja, kot je prikazano spodaj:

localhost: 8080

Izpolnite ta obrazec in kliknite na namesti WordPress.

kaj je ključna napaka

Ko je končan, znova obiščite naslov IP strežnika (tokrat z vrati 8181, npr. Localhost: 8181). Pozdravil vas bo zaslon za prijavo phpMyAdmin:

Nadaljujte in se prijavite z uporabo uporabniškega imena in gesla, ki ste ju nastavili v datoteki YAML, in lahko boste brskali po svoji bazi podatkov. Opazili boste, da strežnik vključuje bazo podatkov wordpress, ki vsebuje vse podatke iz namestitve WordPress.

Tukaj končujem svoj blog Docker Container. Upam, da ste uživali v tej objavi. Lahko preverite drugi blogi tudi v seriji, ki obravnava osnove Dockerja.

Če se vam zdi ta spletni dnevnik Docker Container ustrezen, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu. Tečaj Edureka DevOps Certification Training pomaga učencem pridobiti znanje o različnih procesih in orodjih DevOps, kot so Lutka, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack in GIT za avtomatizacijo več korakov v SDLC.

Imate vprašanje zame? Prosimo, omenite to v oddelku za komentarje in se vam oglasim.