Ce este Docker Container? - Containerați aplicația dvs. utilizând Docker



Docker Container este o soluție alternativă ușoară la Virtual Machine pentru a crea, implementa și rula aplicații în interiorul unui container.

Ei bine, sper că mi-ai citit blogurile anterioare Docher unde am acoperit elementele de bază ale lui Docker. Aici, în acest blog Docker Container voi discuta despre ce sunt Docker Containers și cum funcționează. În cea mai mare parte, ne vom concentra asupra practicilor și cazurilor de utilizare ale Docker.

Am enumerat subiectele acestui blog Docker Container:





  • De ce avem nevoie de containere Docker?
  • Cum funcționează containerele Docker?
  • Cazuri de utilizare ale containerului Docker

De ce avem nevoie de containere Docker?

Îmi amintesc încă corect, lucram la un proiect. În acel proiect am urmărit arhitectura microserviciului. Pentru cei dintre voi care nu știu ce este microserviciul, nu vă faceți griji, vă voi face o introducere.

Ideea din spatele microserviciilor este că anumite tipuri de aplicații devin mai ușor de construit și de întreținut atunci când sunt împărțite în piese mai mici, compozabile, care funcționează împreună. Fiecare componentă este dezvoltată separat, iar aplicația este apoi pur și simplu suma componentelor sale constitutive.



Luați în considerare exemplul de mai jos:

Aplicație de cumpărături online - Docker Container - Edureka

În diagrama de mai sus există un magazin online cu microservicii separate pentru contul de utilizator, catalogul de produse, procesarea comenzilor și coșurile de cumpărături.



Ei bine, această arhitectură are multe avantaje:

  • Chiar dacă unul dintre microservicii dvs. eșuează, întreaga aplicație este în mare parte neafectată.
  • Este mai ușor de gestionat

Există și multe alte avantaje, nu voi intra în prea multe detalii despre microservicii în această postare. Dar, în curând, voi veni cu câteva bloguri și pe microservicii.

În această arhitectură, foloseam mașini virtuale CentOS. Aceste mașini virtuale au fost configurate scriind scripturi lungi. Ei bine, configurarea acestor VM-uri nu a fost singura problemă.

Dezvoltarea unor astfel de aplicații necesită pornirea mai multor microservicii într-o singură mașină. Deci, dacă începeți cinci dintre aceste servicii, aveți nevoie de cinci VM-uri pe acel aparat. Luați în considerare diagrama de mai jos:

Cealaltă problemă este destul de comună, știu că mulți dintre voi vă puteți raporta la ea. Aplicația funcționează pe laptopul unui dezvoltator, dar nu în testare sau producție. Acest lucru se poate datora faptului că nu se păstrează un mediu de calcul consistent. Luați în considerare diagrama de mai jos:

Au existat și multe alte probleme în afară de asta, dar simt că aceste probleme îmi sunt suficiente pentru a vă explica nevoia de containere Docker.

Aflați cum sunt mai bune containerele Docker decât mașinile virtuale

Deci, imaginați-vă dacă ofer 8 GB RAM tuturor VM-urilor mele și am 5 microservicii care rulează pe mașini virtuale diferite. În acest caz, aceste VM-uri vor necesita 40 GB RAM. Ei bine, acum am nevoie ca configurațiile mașinii mele gazdă să fie foarte mari, aproape 44 GB de RAM ar trebui să fie acolo în mașina mea gazdă. Evident, aceasta nu este o soluție durabilă pentru o astfel de arhitectură, deoarece, risipesc o mulțime de resurse aici.

Bine, am o mulțime de resurse de pierdut, dar totuși am o problemă de inconsecvență în ciclul meu de viață de livrare a software-ului (SDLC). Trebuie să configurez aceste VM-uri în test, precum și în mediul prod. Undeva în acest proces, unele software-uri nu au fost actualizate pe serverul de testare, iar echipa Dev utilizează versiunea actualizată a software-ului. Acest lucru duce la conflicte.

Ce se întâmplă dacă folosesc 100 de VM-uri, atunci configurarea fiecărei VM va dura mult timp și, în același timp, este predispusă la erori.

Acum, să înțelegem ce este Docker Container și cum funcționează și cum a rezolvat problema mea.

Ce este un container Docker?

Docker este un instrument conceput pentru a facilita crearea, implementarea și rularea aplicațiilor folosind containere.

Puteți crea Containere Docker, aceste containere vor conține toate binarele și bibliotecile necesare pentru aplicația dvs. sau microserviciu în cazul meu. Deci aplicația dvs. este prezentă într-un container sau ați depus cererea în container. Acum, același container poate fi utilizat în mediul Test și Prod.

Containerele Docker sunt o soluție ușoară pentru mașinile virtuale și utilizează sistemul de operare gazdă. Cea mai bună parte, nu trebuie să alocați în prealabil nicio memorie RAM la Docker Container, aceasta o va lua după cum este necesar. Deci, cu Docker Container nu trebuie să-mi fac griji cu privire la risipa de resurse.

Să înțelegem acum, cum funcționează un container Docker.

Cum funcționează un container Docker?

Diagrama de mai jos este practic o modalitate de a utiliza Docker. Și presupun că aveți o idee despre Docker Image și Dockerfile.

Băieți, știu că diagrama arată puțin complexă, dar credeți-mă că nu este atât de complexă. Mai jos este explicația diagramei, chiar și după aceea consideri că este greu de înțeles, poți să-ți comentezi îndoielile, voi răspunde acestor întrebări cât mai curând posibil.

  • Un dezvoltator va scrie mai întâi codul proiectului într-un fișier Docker și apoi va construi o imagine din acel fișier.
  • Această imagine va conține întregul cod de proiect.
  • Acum, puteți rula această imagine Docker pentru a crea câte containere doriți.
  • Această imagine Docker poate fi încărcată pe hub-ul Docker (Practic este un depozit de cloud pentru imaginile dvs. Docker, îl puteți menține public sau privat).
  • Această imagine Docker de pe hub-ul Docker poate fi extrasă de alte echipe precum QA sau Prod.

Acest lucru nu numai că previne risipa de resurse, dar se asigură și că mediul de calcul care există în laptopul unui dezvoltator este reprodus și în alte echipe. Mă simt acum, nu trebuie să vă spun de ce avem nevoie de Docker.

Acesta a fost un mod de a-l folosi, cred că voi trebuie să fiți curioși să știți cum am folosit Docker pentru a rezolva problema mea de microservicii. Permiteți-mi să vă ofer o imagine de ansamblu asupra aceluiași.

Mai jos este explicația diagramei:

  • În primul rând, am scris cerințele complexe într-un fișier Docker.
  • Apoi, l-am împins pe GitHub.
  • După aceea am folosit un server CI (Jenkins).
  • Acest server Jenkins îl va trage în jos de la Git și va crea mediul exact. Aceasta va fi utilizată atât în ​​serverele de producție, cât și în serverele de testare.
  • L-am implementat în stagiere (se referă la implementarea software-ului dvs. pe servere în scopuri de testare, înainte de a le implementa complet în producție.) Medii pentru testeri.
  • Practic, am lansat exact ceea ce aveam în dezvoltare, testare și etapizare în producție.

De fapt, va fi corect să spun că Docker mi-a ușurat viața.

Ei bine, asta a fost povestea companiei mele, să ne uităm la studiul de caz al Universității Indiana. Cum Docker le-a rezolvat problemele.

Studiu de caz al Universității Indiana:

Indiana University este un sistem universitar public cu mai multe campusuri din statul Indiana, Statele Unite.

Declarație problemă

Foloseau scripturi personalizate pentru a implementa aplicațiile în VM.

Mediul lor a fost optimizat pentru aplicațiile vechi bazate pe Java. Mediul lor în creștere implică produse noi care nu sunt bazate exclusiv pe Java. Pentru a le oferi studenților cea mai bună experiență posibilă, Universitatea a trebuit să înceapă modernizarea aplicațiilor.

Universitatea a dorit să îmbunătățească modul în care arhitectează aplicațiile, trecând la o arhitectură bazată pe microservicii pentru aplicațiile lor.

Securitatea a fost necesară pentru datele elevilor, cum ar fi SSN-urile și datele privind sănătatea studenților.

Soluţie:

Toate problemele au fost rezolvate de Docker Data Center (DDC), luați în considerare diagrama de mai jos:

aruncând dublu la int java

Registrul de încredere Docker - Stochează imaginile Docker.

UI web UCP (Universal Control Plane) - Ajută la gestionarea întregului cluster dintr-un singur loc. Serviciile sunt implementate utilizând UCP web UI, utilizând imagini Docker care sunt stocate în DTR (Docker Trusted Registry).

Echipele IT IT utilizează Universal Control Plane pentru a furniza software-ul instalat de Docker pe gazde și apoi să își implementeze aplicațiile fără a fi nevoie să facă o grămadă de pași manuali pentru a-și configura toată infrastructura.

UCP și DTR se integrează cu serverul lor LDAP pentru a asigura rapid accesul la aplicațiile lor.

java de copiere superficială vs profundă

Sper că voi ați citit blogurile anterioare pentru a afla elementele de bază ale Docker.

Acum, vă voi explica cum putem folosi Docker Compose pentru aplicații cu mai multe containere.

Docker Hands-On:

Presupun că ați instalat Docker.Voi folosi Docker Compose în această postare, mai jos am făcut o mică introducere despre Docker Compose.

Docker Compose: Este un instrument pentru definirea și rularea aplicațiilor Docker multi-container. Cu Docker Compose, puteți utiliza un fișier Compose pentru a configura serviciile aplicației dvs. Apoi, utilizând o singură comandă, puteți crea și porni toate serviciile din configurația dvs.

Să presupunem că aveți mai multe aplicații în diverse containere și că toate aceste containere sunt legate între ele. Deci, nu doriți să executați fiecare dintre aceste containere unul câte unul. Dar, doriți să rulați aceste containere cu o singură comandă. Aici intervine Docker Compose în imagine. Cu acesta puteți rula mai multe aplicații în diferite containere cu o singură comandă. adică docker-compune.

Exemplu: Imaginați-vă că aveți containere diferite, unul care rulează o aplicație web, altul care rulează un postgres și altul care rulează redis, într-un fișier YAML. Acesta se numește fișier de compunere docker, de acolo puteți rula aceste containere cu o singură comandă.

Să luăm încă un exemplu:

Să presupunem că doriți să publicați un blog, pentru aceasta veți folosi CMS (Content Management System), iar wordpress este cel mai utilizat CMS. Practic, aveți nevoie de un container pentru WordPress și mai aveți nevoie de un container ca MySQL pentru back-end, acel container MySQL ar trebui să fie legat de containerul wordpress. De asemenea, avem nevoie de încă un container pentru Php Myadmin care va fi conectat la baza de date MySQL, practic, este folosit pentru a accesa baza de date MySQL.

Ce zici să execut practic exemplul de mai sus.

Pașii implicați:

  1. Instalați Docker Compose :
  2. Instalați WordPress: Vom folosi oficialul WordPress și MariaDB Imagini Docker.
  3. Instalați MariaDB: Este unul dintre cele mai populare servere de baze de date din lume. Este realizat de dezvoltatorii originali MySQL. MariaDB este dezvoltat ca software open source și ca bază de date relațională oferă o interfață SQL pentru accesarea datelor.
  4. Instalați PhpMyAdmin: Este un instrument software gratuit scris în PHP, destinat gestionării administrării MySQL pe web.
  5. Creați site-ul WordPress:

Să începem!

Instalați Docker Compose:

Instalați mai întâi Python Pip:

sudo apt-get install python-pip

Acum, puteți instala Docker Compose:

sudo pip instala docker-compose

Instalați WordPress:

Creați un director wordpress:

mkdir wordpress

Introduceți acest director wordpress:

cd wordpress /

În acest director creați un fișier Docker Compose YAML, apoi editați-l folosind gedit:

sudo gedit docker-compose.yml

Lipiți liniile de cod de mai jos în acel fișier yaml:

wordpress: imagine: linkuri wordpress: - wordpress_db: porturi mysql: - 8080: 80 wordpress_db: imagine: mediu mariadb: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: imagine: corbinu / docker-phpmyadmin links: - wordpress_db: porturi mysql: - 8181: 80 mediu: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Știu că vrei să explic acest cod, așa că ceea ce voi face, voi lua mici secțiuni din acest cod și îți voi explica ce se întâmplă.

wordpress_db: ... mediu: MYSQL_ROOT_PASSWORD: edureka ...

Aceasta va seta o variabilă de mediu în interiorul containerului wordpress_db numită MYSQL_ROOT_PASSWORD cu parola dorită. Imaginea MariaDB Docker este configurată pentru a verifica această variabilă de mediu la pornire și se va ocupa de configurarea DB cu un cont root cu parola definită ca MYSQL_ROOT_PASSWORD.

wordpress: ... porturi: - 8080: 80 ...

Primul număr de port este numărul de port de pe gazdă, iar al doilea număr de port este portul din container. Deci, această configurație redirecționează cererile de pe portul 8080 al gazdei către portul 80 implicit al serverului web din interiorul containerului.

phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: porturi mysql: - 8181: 80 mediu: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Acest lucru apucă docker-phpmyadmin de către membru al comunității corbinu, îl leagă de containerul nostru wordpress_db cu numele mysql (adică din interiorul containerului phpmyadmin referințele la numele gazdei mysql vor fi redirecționate către containerul nostru wordpress_db), expune portul 80 pe portul 8181 al sistemul gazdă și, în cele din urmă, setează câteva variabile de mediu cu numele nostru de utilizator și parola MariaDB. Această imagine nu preia automat variabila de mediu MYSQL_ROOT_PASSWORD din mediul wordpress_dbcontainer, așa cum o face imaginea wordpress. De fapt, trebuie să copiem linia MYSQL_ROOT_PASSWORD: edureka din containerul wordpress_db și să setăm numele de utilizator la rădăcină.

Acum porniți grupul de aplicații:

docker-compune sus -d

Asta este tot ce trebuie să faci. Puteți adăuga oricâte containere doriți în acest fel și le puteți conecta pe toate în orice mod doriți.

Acum, în browser, mergeți la portul 8080, utilizând adresa IP publică sau numele gazdei, așa cum se arată mai jos:

localhost: 8080

Completați acest formular și faceți clic pe instalare WordPress.

După ce ați terminat, vizitați din nou adresa IP a serverului dvs. (de data aceasta folosind portul 8181, de ex. Localhost: 8181). Veți fi întâmpinat de ecranul de conectare phpMyAdmin:

Continuați și conectați-vă folosind numele de utilizator root și parola pe care le-ați setat în fișierul YAML și veți putea naviga în baza de date. Veți observa că serverul include o bază de date wordpress, care conține toate datele din instalarea dvs. WordPress.

Aici, închei blogul meu Docker Container. Sper că v-a plăcut această postare. Puteți verifica alte bloguri și în serie, care se ocupă de elementele de bază ale lui Docker.

Dacă ați găsit relevant acest blog Docker Container, consultați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Cursul Edureka DevOps Certification Training ajută cursanții să câștige expertiză în diferite procese și instrumente DevOps, cum ar fi Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack și GIT pentru automatizarea mai multor pași în SDLC.

Ai o întrebare pentru mine? Vă rugăm să o menționați în secțiunea de comentarii și vă voi răspunde.