‫Această secțiune va fi plină de prelegeri și sarcini în jurul datelor persistente.
‫În primul rând, vom discuta despre problemele de date persistente și despre cum a devenit chiar
‫o problemă în primul rând.
‫Conceptele cheie pe care trebuie să le înțelegeți sunt ideea unei infrastructuri imuabile.
‫Și ideea în jurul containerelor este în mod natural efemer în design.
‫Vom acoperi cele de la prima conferință. Apoi ne vom arunca cu capul în volume de date și
‫cum rezolvă unele dintre problemele noastre în jurul datelor persistente. Apoi, vom săpați în mount-uri de legare și cum
‫rezolvă diferite probleme cu date persistente. Apoi, vom termina această secțiune cu câteva sarcini în jurul modului în care
‫să păstrăm datele bazei de date, în timp ce înlocuim containerele pentru bazele de date. Și apoi, de asemenea, în jurul valorii de
‫fapt montarea cod într-un container de la gazdă în timp ce îl editați, astfel
‫încât să puteți rula acest cod în interiorul container live. Cerințele pentru această primă conferință sunt doar înțelegerea modului în care
‫se execută containerele și conceptele despre containere și imagini pe care le-am discutat până acum.
‫Până acum, vă îngrijorează doar ceea ce este necesar pentru a rula un container, nu datele unice care ar putea fi create
‫odată ce un container rulează.
‫Containerele sunt menite să fie imuabile și efemere.
‫Acestea sunt doar buzzwords fantezie pentru neschimbat și temporar, sau de unică folosință.
‫Ideea este că putem să aruncăm un container și să creăm unul nou dintr-o imagine,
‫nu?
‫Apoi, nu vorbim despre o limitare reală a containerelor, ci mai degrabă despre un scop de proiectare sau despre
‫o bună practică.
‫Aceasta este ideea unei infrastructuri imuabile în care nu schimbăm lucrurile odată ce rulează.
‫Dacă trebuie să se întâmple o schimbare de configurare sau poate să se întâmple o actualizare a versiunii
‫containerului, atunci redimensionăm un nou container.
‫Acest lucru ne oferă beneficii uriașe în fiabilitate și consecvență, iar modificările se pot reproduce.
‫Dar există un compromis.
‫Cum rămâne cu datele unice pe care aplicația dvs. le va produce? Aceste baze de date sau o valoare de stocare-cheie sau orice altceva
‫pe care aplicația dvs. o scutește într-un fișier?
‫În mod ideal, containerele nu trebuie să conțină datele dvs. unice amestecate cu binarele de aplicații. Acest lucru este cunoscut sub numele
‫de "separarea preocupărilor", iar Docker ne oferă un mare beneficiu aici.
‫Putem actualiza aplicația noastră prin recrearea unui nou container, cu o versiune actualizată a aplicației noastre și, în mod ideal, datele noastre unice sunt
‫în continuare acolo unde trebuie să fie și au fost păstrate pentru noi în timp ce recipientul nostru a fost reciclat.
‫În cazul în care nu ați observat până acum, containerele pe care le-am utilizat în mod implicit au fost persistente.
‫Orice schimbări în ele s-au păstrat de-a lungul repornirilor și repornirea până când am eliminat containerul.
‫Doar pentru că am oprit containerul sau am restartat gazda,
‫nu înseamnă că modificările fișierului din container vor dispărea.
‫Doar atunci când scoatem containerul că stratul lui UFS dispare, dar vrem să reușim să facem acest
‫lucru la nevoie.
‫Această problemă a datelor unice este cunoscută în industrie ca "date persistente" și până la containere,
‫nu am avut un nume pentru asta. Deoarece majoritatea lucrurilor pe care le-am construit au fost persistente, ca și
‫cum ați ști acele servere vechi care rulează acea aplicație veche timp de cinci sau 10 ani sau mai mult.
‫Totul a fost persistent în mod implicit.
‫Acum, în noua lume a containerelor și scalarea automată a aplicațiilor, datele persistente creează o
‫problemă unică.
‫Docker are două soluții la această problemă, cunoscute sub
‫numele de "volume de date" și "mount mounts. "Volumele Docker sunt o opțiune de configurare
‫pentru un container care creează o locație specială în afara sistemului
‫de fișiere union al containerului pentru stocarea datelor unice.
‫Acest lucru îl păstrează prin eliminarea containerelor și ne permite să îl atașăm la orice recipient dorim.
‫Și containerul o vede doar ca o cale de fișiere locală.
‫Apoi, există mount-uri de legare, care sunt pur și simplu ne partajarea sau montarea unui director gazdă, sau fișier, într-un container.
‫Din nou, va arăta ca o cale de fișier locală sau o cale de director către container.
‫Nu va ști de fapt că vine de la gazdă.