Što je Docker spremnik? - Spremite svoju aplikaciju pomoću Dockera

Docker Container je lagano alternativno rješenje za virtualni stroj za stvaranje, postavljanje i pokretanje aplikacija unutar spremnika.

Pa, nadam se da ste pročitali moje prethodne blogove na Lučki radnik gdje sam obradio osnove Dockera. Ovdje, na ovom blogu Docker Container, raspravljat ću o tome što su Docker Containers i kako to funkcionira. Uglavnom ćemo se usredotočiti na praktične i korisne slučajeve Dockera.

Nabrojao sam teme za ovaj blog Docker Container:





  • Zašto su nam potrebni docker kontejneri?
  • Kako funkcioniraju Docker kontejneri?
  • Slučajevi upotrebe Docker kontejnera

Zašto su nam potrebni docker kontejneri?

Još se uvijek dobro sjećam, radio sam na projektu. U tom smo projektu slijedili arhitekturu mikro usluga. Za one koji ne znate što je mikrousluga, ne brinite, dat ću vam uvod u nju.

Ideja mikrousluga je da određene vrste aplikacija postaju lakše graditi i održavati kada se raščlane na manje dijelove koji se mogu sastaviti i koji rade zajedno. Svaka se komponenta razvija zasebno, a aplikacija je tada jednostavno zbroj sastavnih komponenata.



Razmotrite primjer u nastavku:

Aplikacija za internetsku kupnju - Docker spremnik - Edureka

U gornjem dijagramu nalazi se internetska trgovina s odvojenim mikrouslugama za korisnički račun, katalog proizvoda, obradu narudžbi i kolica.



Pa, ova arhitektura ima puno prednosti:

  • Čak i ako jedna od vaših mikro usluga ne uspije, to neće utjecati na cijelu vašu aplikaciju.
  • Lakše je upravljati

Postoje i mnoge druge pogodnosti, u ovom postu neću ulaziti u detalje o mikrouslugama. No, uskoro ću smisliti i nekoliko blogova na mikroservisima.

U ovoj arhitekturi koristili smo CentOS virtualne strojeve. Ti su virtualni strojevi konfigurirani pisanjem dugih skripti. Pa, konfiguriranje tih VM-ova nije bio jedini problem.

Razvoj takvih aplikacija zahtijeva pokretanje nekoliko mikro usluga u jednom stroju. Dakle, ako pokrećete pet od tih usluga, trebate pet VM-a na tom stroju. Razmotrite donji dijagram:

Drugi je problem prilično čest, znam da se mnogi od vas mogu s tim povezati. Aplikacija radi u prijenosnom računalu programera, ali ne u testiranju ili proizvodnji. To može biti zbog nepridržavanja dosljednog računalnog okruženja. Razmotrite donji dijagram:

Bilo je i mnogo drugih problema, osim ovoga, ali smatram da su mi ovi problemi dovoljni da vam objasnim potrebu za Docker spremnicima.

Saznajte kako su Docker spremnici bolji od virtualnih strojeva

Dakle, zamislite da li dajem 8 GB RAM-a svim svojim VM-ovima i imam 5 mikroservisa koji rade na različitim virtualnim strojevima. U tom će slučaju ovi VM-ovi trebati 40 GB RAM-a. Eto, sada zahtijevam da konfiguracije mog host računala budu vrlo visoke, gotovo 44 GB RAM-a treba biti tamo u mom host računalu. Očito, ovo nije održivo rješenje za takvu arhitekturu, jer ovdje trošim puno resursa.

U redu, imam mnogo resursa za gubljenje, ali svejedno imam problem nedosljednosti u svom životnom ciklusu isporuke softvera (SDLC). Moram konfigurirati ove VM-ove u testu, kao i u proizvodnom okruženju. Negdje u tom procesu neki softver nije ažuriran na testnom poslužitelju, a tim za razvoj koristi ažuriranu verziju softvera. To dovodi do sukoba.

Što ako koristim 100 VM-a, tada će konfiguriranje svakog VM-a potrajati puno vremena, a ujedno je i sklono pogreškama.

Sada, hajde da shvatimo što je Docker Container i kako to radi i kako je riješio moj problem.

Što je Docker spremnik?

Docker je alat dizajniran da olakša stvaranje, razvijanje i pokretanje aplikacija pomoću spremnika.

Možete stvoriti Docker spremnike, ti će spremnici sadržavati sve binarne datoteke i knjižnice potrebne u vašoj aplikaciji ili mikroservisu u mom slučaju. Dakle, vaša je aplikacija prisutna u spremniku ili ste je kontejnerirali. Sad se taj isti spremnik može koristiti u testnom i produljenom okruženju.

Docker spremnici lagano su rješenje za virtualne strojeve i koriste host OS. Najbolji dio, ne morate unaprijed dodijeliti RAM memoriju Docker spremniku, trebat će ga prema potrebi i kada je to potrebno. Dakle, s Docker Containerom ne moram brinuti o rasipanju resursa.

Shvatimo sada kako funkcionira Docker Container.

Kako radi Docker kontejner?

Dijagram u nastavku je u osnovi način korištenja Dockera. Pretpostavljam da imate ideju o Docker Imageu i Dockerfileu.

java pretvoriti dvostruko u cijeli broj

Dečki, znam da dijagram izgleda pomalo složeno, ali vjerujte mi da nije toliko složen. Ispod je objašnjenje dijagrama, čak i nakon toga osjećate da je to teško razumjeti, možete komentirati svoju sumnju, ja ću odgovoriti na ta pitanja ŠTO prije.

  • Programer će prvo napisati projektni kôd u Docker datoteku, a zatim iz te datoteke izgraditi sliku.
  • Ova će slika sadržavati cijeli projektni kod.
  • Sada možete pokrenuti ovu Docker sliku da biste stvorili onoliko spremnika koliko želite.
  • Ova Docker slika može se prenijeti na Docker čvorište (u osnovi je to spremište u oblaku za vaše Docker slike, možete ga držati javnim ili privatnim).
  • Ovu Docker sliku na Docker čvorištu mogu povući drugi timovi poput QA ili Prod.

To ne samo da sprječava rasipanje resursa, već osigurava da se računalno okruženje koje postoji u prijenosnom računalu programera replicira i na druge timove. Sad osjećam, ne moram vam reći zašto nam treba Docker.

Ovo je bio jedan od načina da ga upotrijebim, pretpostavljam da vas ljudi zanima znati kako sam pomoću Dockera riješio svoj problem s mikroservisima. Dopustite mi da vam dam pregled istog.

Dolje je objašnjenje dijagrama:

  • Prvo, napisali smo složene zahtjeve u Dockerfileu.
  • Zatim smo ga gurnuli na GitHub.
  • Nakon toga koristili smo CI poslužitelj (Jenkins).
  • Ovaj Jenkinsov poslužitelj povući će ga iz Gita i izgraditi točno okruženje. To će se koristiti na produkcijskim poslužiteljima kao i na testnim poslužiteljima.
  • Razmjestili smo ga u inscenacijsko okruženje (odnosi se na postavljanje vašeg softvera na poslužitelje u svrhu testiranja, prije nego što ga u potpunosti implementiramo u produkciju.) Okruženja za testere.
  • U osnovi, u proizvodnju smo uložili upravo ono što smo imali u razvoju, ispitivanju i postavljanju.

Zapravo će biti pošteno reći da mi je Docker olakšao život.

Pa, to je bila priča moje tvrtke, pogledajmo studiju slučaja Sveučilišta Indiana. Kako je Docker riješio njihove probleme.

Studija slučaja sa Sveučilišta Indiana:

Sveučilište Indiana javni je sveučilišni sustav s više kampusa u državi Indiana, Sjedinjene Države.

Izjava o problemu

Koristili su prilagođene skripte za postavljanje aplikacija u VM.

Njihovo je okruženje optimizirano za njihove naslijeđene Java programe. Njihovo rastuće okruženje uključuje nove proizvode koji se ne temelje samo na javi. Kako bi svojim studentima pružilo najbolje moguće iskustvo, Sveučilište je trebalo započeti s modernizacijom aplikacija.

Sveučilište je željelo poboljšati način na koji oblikuju aplikacije prelaskom na arhitekturu temeljenu na mikroservisima za njihove primjene.

Sigurnost je bila potrebna za podatke učenika kao što su SSN i ​​podaci o zdravlju učenika.

Riješenje:

Sve probleme riješio je Docker Data Center (DDC), razmotrite donji dijagram:

Docker pouzdani registar - Pohranjuje Dockerove slike.

UCP (Universal Control Plane) web korisničko sučelje - Pomaže u upravljanju cijelim klasterom s jednog mjesta. Usluge se raspoređuju pomoću UCP web korisničkog sučelja, koristeći Dockerove slike pohranjene u DTR (Docker Pouzdani registar).

IT operativni timovi koriste Universal Control Plane za pružanje softvera Docker instaliranog na hostovima, a zatim postavljaju svoje aplikacije bez potrebe za ručnim koracima kako bi postavili svu svoju infrastrukturu.

UCP i DTR integriraju se sa svojim LDAP poslužiteljem za brzi pristup njihovim aplikacijama.

Nadam se da ste pročitali prethodne blogove kako biste naučili osnove Dockera.

Sad ću vam objasniti kako možemo koristiti Docker Compose za primjenu u više spremnika.

Praktično korištenje Dockera:

Pretpostavljam da ste instalirali Docker.U ovom postu koristit ću Docker Compose, u nastavku sam dao mali uvod u Docker Compose.

Sastavite docker: To je alat za definiranje i pokretanje Docker aplikacija s više spremnika. Pomoću programa Docker Compose datoteku za sastavljanje možete konfigurirati usluge svoje aplikacije. Zatim, pomoću jedne naredbe, možete stvoriti i pokrenuti sve usluge iz svoje konfiguracije.

Pretpostavimo da imate više aplikacija u raznim spremnicima i da su svi ti spremnici povezani zajedno. Dakle, ne želite izvršiti svaki od tih spremnika jedan po jedan. Ali, te kontejnere želite pokrenuti jednom naredbom. Tu Docker Compose dolazi na sliku. Pomoću nje možete pokrenuti više aplikacija u raznim spremnicima jednom naredbom. tj. docker-sastaviti.

Primjer: Zamislite da imate različite spremnike, jedan koji pokreće web-aplikaciju, drugi pokreće postgres i drugi koji pokreće redis, u YAML datoteci. To se naziva datoteka za sastavljanje dockera, odatle možete pokrenuti ove spremnike jednom naredbom.

Uzmimo još jedan primjer:

Pretpostavimo da želite objaviti blog, za to ćete koristiti CMS (sustav za upravljanje sadržajem), a wordpress je najčešće korišten CMS. U osnovi, trebate jedan spremnik za WordPress, a trebate još jedan spremnik kao MySQL za pozadinu, taj MySQL spremnik trebao bi biti povezan s wordpress spremnikom. Također nam treba još jedan spremnik za Php Myadmin koji će biti povezan s MySQL bazom podataka, u osnovi se koristi za pristup MySQL bazi podataka.

Kako bi bilo da gore navedeni primjer izvršim praktično.

Uključeni koraci:

  1. Instalirajte Docker Compose :
  2. Instalirajte WordPress: Koristit ćemo službeno WordPress i MariaDB Dockerove slike.
  3. Instalirajte MariaDB: Jedan je od najpopularnijih poslužitelja baza podataka na svijetu. Napravili su ga originalni programeri MySQL-a. MariaDB je razvijen kao softver otvorenog koda, a kao relacijska baza podataka pruža SQL sučelje za pristup podacima.
  4. Instalirajte PhpMyAdmin: Riječ je o besplatnom softverskom alatu napisanom na PHP-u, namijenjenom administraciji MySQL-a putem weba.
  5. Izradite WordPress web mjesto:

Započnimo!

Instaliraj Docker Compose:

Prvo instalirajte Python Pip:

sudo apt-get instalirati python-pip

php mysql_fetch_array

Sada možete instalirati Docker Compose:

sudo pip instalirati docker-compose

Instalirajte WordPress:

Stvorite wordpress direktorij:

mkdir wordpress

Unesite ovaj wordpress direktorij:

cd wordpress /

U ovom direktoriju stvorite Docker Compose YAML datoteku, a zatim je uredite pomoću gedit:

sudo gedit doker-sastavi.yml

Zalijepite donje retke koda u tu yaml datoteku:

wordpress: slika: wordpress veze: - wordpress_db: mysql portovi: - 8080: 80 wordpress_db: image: mariadb okruženje: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin linkovi: - wordpress_db: mysql portovi: - 8181: 80 MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Znam da želite da objasnim ovaj kod, pa ću, što ću učiniti, uzeti male dijelove ovog koda i objasniti vam što se događa.

wordpress_db: ... okruženje: MYSQL_ROOT_PASSWORD: edureka ...

Ovo će postaviti varijablu okruženja unutar spremnika wordpress_db pod nazivom MYSQL_ROOT_PASSWORD sa željenom lozinkom. Slika MariaDB Docker konfigurirana je za provjeru ove varijable okruženja kad se pokrene i pobrinut će se za postavljanje DB-a s korijenskim računom s lozinkom definiranom kao MYSQL_ROOT_PASSWORD.

wordpress: ... portovi: - 8080: 80 ...

Prvi broj porta je broj porta na hostu, a drugi broj porta je port unutar spremnika. Dakle, ova konfiguracija prosljeđuje zahtjeve na priključku 8080 hosta na zadani priključak web poslužitelja 80 unutar spremnika.

phpmyadmin: slika: corbinu / docker-phpmyadmin veze: - wordpress_db: mysql portovi: - 8181: 80 okruženje: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Ovo grabi docker-phpmyadmin od strane člana zajednice corbinu, povezuje ga s našim wordpress_db spremnikom s imenom mysql (što znači da će se unutar phpmyadmin-ovog spremnika reference na ime hosta mysql prosljeđivati ​​u naš wordpress_db spremnik), izlaže svoj priključak 80 na portu 8181 od host sustav i na kraju postavlja nekoliko varijabli okoline s našim korisničkim imenom i lozinkom MariaDB. Ova slika automatski ne preuzima varijablu okruženja MYSQL_ROOT_PASSWORD iz okoline wordpress_dbcontainer, onako kako to čini wordpress slika. Zapravo moramo kopirati redak MYSQL_ROOT_PASSWORD: edureka iz spremnika wordpress_db i postaviti korisničko ime na root.

Sada pokrenite grupu aplikacija:

docker-compose up -d

To je sve što morate učiniti. Na ovaj način možete dodati koliko god želite spremnika i povezati ih na bilo koji način.

Sada u pregledniku idite na priključak 8080, koristeći svoj javni IP ili ime hosta, kao što je prikazano dolje:

lokalnihost: 8080

Ispunite ovaj obrazac i kliknite na install WordPress.

Nakon završetka, ponovno posjetite IP adresu poslužitelja (ovaj put pomoću porta 8181, npr. Localhost: 8181). Dočekat će vas zaslon za prijavu phpMyAdmin:

Naprijed se prijavite pomoću korijena korisničkog imena i lozinke koje ste postavili u datoteci YAML i moći ćete pregledavati svoju bazu podataka. Primijetit ćete da poslužitelj uključuje wordpress bazu podataka koja sadrži sve podatke iz vaše WordPress instalacije.

Evo, završavam svoj blog Docker Container. Nadam se da ste uživali u ovom postu. Mozes provjeriti drugi blogovi u seriji, koja se bavi osnovama Dockera.

Ako vam je ovaj blog Docker Container relevantan, pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Edureka DevOps certifikacijski tečaj pomaže učenicima da steknu stručnost u različitim DevOps procesima i alatima kao što su Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack i GIT za automatizaciju više koraka u SDLC-u.

Imaš pitanje za mene? Molimo spomenite to u odjeljku za komentare i javiću vam se.