Învățăm Docker, partea 6: lucrul cu datele

În această parte a traducerii seriei de materiale despre Docker, vom discuta despre gestionarea datelor. În special, despre volumele Docker. În aceste materiale, am comparat constant mecanismele software ale Docker cu diferite analogii comestibile. Nu ne vom abate de la această tradiție nici aici. Datele în Docker să fie considerate condimente. Există multe tipuri de condimente în lume, iar în Docker există multe moduri de a gestiona datele.

→ Partea 1: bazele
→ Partea 2: termeni și concepte
→ Partea 3: fișiere Dockerfile
→ Partea 4: reducerea dimensiunii imaginilor și accelerarea construirii acestora
→ Partea 5: comenzi
→ Partea 6: gestionarea datelor

Învățăm Docker, partea 6: lucrul cu datele

Rețineți că acest material a fost pregătit folosind engine-ul Docker versiunea 18.09.1 și API versiunea 1.39.

Datele în Docker pot fi stocate fie temporar, fie permanent. Să începem cu datele temporare.

Stocarea temporară a datelor

În containerele Docker, gestionarea datelor temporare se poate face în două moduri.

Implicit, fișierele create de aplicația care rulează în container sunt salvate în stratul containerului care suportă scrierea. Pentru ca acest mecanism să funcționeze, nu trebuie să configurăm nimic special. Se dovedește că este ieftin și eficient. Aplicația trebuie doar să salveze datele și să continue să își desfășoare activitatea. Totuși, după ce containerul nu mai există, datele salvate în acest mod simplu vor dispărea.

Pentru stocarea fișierelor temporare în Docker, se poate folosi o altă soluție, potrivită pentru cazurile în care este necesar un nivel mai ridicat de performanță, comparativ cu cel realizabil prin utilizarea mecanismului standard de stocare temporară a datelor. Dacă nu aveți nevoie ca datele dvs. să rămână stocate mai mult decât perioada de existență a containerului, puteți conecta containerului tmpfs — un depozit temporar de informații care utilizează memoria RAM a gazdei. Acest lucru va accelera operațiunile de scriere și citire a datelor.

Adesea, datele trebuie să fie stocate și după ce containerul a încetat să existe. Pentru aceasta, ne vor fi utile mecanismele de stocare permanentă a datelor.

Stocarea permanentă a datelor

Există două metode care permit prelungirea duratei de viață a datelor pe o perioadă mai mare decât durata de viață a containerului. Una dintre metode constă în utilizarea tehnologiei bind mount. Prin această abordare, se poate monta, de exemplu, un folder existent pe disc pentru container. Procesele din afara Docker vor putea lucra cu datele stocate în acel folder. Iată cum arată montarea tmpfs și tehnologia bind mount.

Învățăm Docker, partea 6: lucrul cu datele
Montarea tmpfs și bind mount

Dezavantajele utilizării tehnologiei bind mount constau în faptul că utilizarea acesteia complică procesul de backup al datelor, migrarea datelor și partajarea datelor între mai multe containere. Este mult mai bine să folosiți volume Docker pentru stocarea permanentă a datelor.

Volume Docker

Un volum este un sistem de fișiere care se află pe mașina gazdă, în afara containerelor. Crearea și gestionarea volumelor este realizată de Docker. Iată principalele caracteristici ale volumelor Docker:

  • Ele reprezintă mijloace pentru stocarea permanentă a informațiilor.
  • Ele sunt autonome și separate de containere.
  • Ele pot fi utilizate în comun de diferite containere.
  • Ele permit organizarea eficientă a citirii și scrierii datelor.
  • Volumele pot fi amplasate pe resursele unui furnizor de cloud extern.
  • Se pot cripta.
  • Le poți da nume.
  • Containerul poate organiza umplerea anticipată a volumului cu date.
  • Ele sunt convenabile pentru testare.

Așa cum vedeți, volumele Docker au proprietăți remarcabile. Să discutăm despre cum le putem crea.

Crearea volumelor

Volumele pot fi create folosind Docker sau prin cereri la API.

Iată o instrucțiune din Dockerfile care permite crearea unui volum la lansarea containerului.

VOLUME /my_volume

Prin utilizarea unei astfel de instrucțiuni Docker, după crearea containerului, se va crea un volum care conține datele deja existente în locația specificată. Vă rugăm să rețineți că dacă creați un volum utilizând Dockerfile, acest lucru nu vă scutește de necesitatea de a specifica punctul de montare al volumului.

Volumele în Dockerfile pot fi create și folosind formatul JSON.

În plus, volumele pot fi create utilizând linia de comandă în timpul funcționării containerului.

Operarea cu volume din linia de comandă

▍Crearea unui volum

Un volum autonom poate fi creat cu următoarea comandă:

docker volume create --name my_volume

▍Obținerea informațiilor despre volume

Pentru a vizualiza lista volumelor Docker, utilizați următoarea comandă:

docker volume ls

Pentru a explora un volum specific, puteți proceda astfel:

docker volume inspect my_volume

▍Ștergerea volumului

Un volum poate fi șters astfel:

docker volume rm my_volume

Pentru a șterge toate volumele care nu sunt utilizate de containere, puteți folosi următoarea comandă:

docker volume prune

Înainte de a șterge volumele, Docker vă va solicita confirmarea pentru a efectua această operație.

Dacă un volum este legat de un anumit container, acel volum nu poate fi șters până când containerul corespunzător nu este șters. Totuși, chiar dacă containerul este șters, Docker nu înțelege întotdeauna acest lucru. Dacă se întâmplă asta, puteți folosi următoarea comandă:

docker system prune

Aceasta este destinată curățării resurselor Docker. După executarea acestei comenzi, ar trebui să aveți posibilitatea de a șterge volumele al căror statut a fost anterior definit incorect.

Flags —mount și —volume

Pentru a lucra cu volume, va trebui să folosiți, în timpul apelării comenzii, adesea aceste flaguri. De exemplu, pentru a crea un volum în timpul creării unui container, puteți folosi următoarea structură: dockerdocker container run --mount source=my_volume, target=\/container\/path\/for\/volume my_image

Cu mulți ani în urmă (înainte de 2017), flagul

--volume era popular. Inițial, acest flag (îl puteți folosi și într-o formă scurtă, atunci când arată ca) era utilizat pentru containere autonome, iar flagul -v--mount era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul poate fi utilizat în orice scenariu. era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul Trebuie menționat că atunci când folosiți flagul

crește volumul de date suplimentare care trebuie specificate în comandă, dar, din mai multe motive, este mai bine să folosiți acest flag, nu era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul — acesta este singurul mecanism care permite lucrul cu servicii sau specificarea parametrilor driverului volumului. În plus, este mai ușor să lucrați cu acest flag. era popular. Inițial, acest flag (îl puteți folosi și într-o formă scurtă, atunci când arată ca. Flag-ul era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul În exemplele existente de comenzi destinate lucrului cu date în Docker, puteți întâlni numeroase exemple de utilizare a flagului

. Încercând să adaptați aceste comenzi pentru nevoile dumneavoastră, trebuie să țineți cont de faptul că flagurile -vutilizează diferite formate de parametri. Adică, nu puteți pur și simplu să înlocuiți era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul și era popular. Inițial, acest flag (îl puteți folosi și într-o formă scurtă, atunci când arată ca și să obțineți o comandă funcțională. -v pe era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul Principala diferență între

constă în faptul că atunci când folosiți flagul era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul și era popular. Inițial, acest flag (îl puteți folosi și într-o formă scurtă, atunci când arată ca toate parametrii sunt adunați împreună, într-un singur câmp, iar când folosiți era popular. Inițial, acest flag (îl puteți folosi și într-o formă scurtă, atunci când arată ca toate parametrii sunt adunați într-un singur câmp, în timp ce la utilizarea era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul parametrii sunt separați.

Când lucrați cu era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul parametrii sunt prezentați sub formă de perechi cheie-valoare, adică, arată astfel cheie=valoare. Aceste perechi sunt separate prin virgule. Iată parametrii frecvent utilizați era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul:

  • type — tipul de montare. Valoarea pentru cheia corespunzătoare poate fi bind, volum sau tmpfs. Aici vorbim despre volume, adică — ne interesează valoarea volum.
  • source — sursa de montare. Pentru volumele denominate aceasta este — numele volumului. Pentru volumele ne-denominate, această cheie nu este specificată. Poate fi abreviată la src.
  • destination — calea la care fișierul sau folderul este montat în container. Această cheie poate fi abreviată la dst sau destinația.
  • readonly — montează un volum care este destinat doar pentru citire. Folosirea acestei chei nu este obligatorie, nu i se atribuie o valoare.

Iată un exemplu de utilizare era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul cu multe parametre:

docker run --mount type=volume,source=volume_name,destination=\/path\/in\/container,readonly my_image

Concluzii

Iată comenzi utile care pot fi folosite atunci când lucrați cu volume Docker:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Iată o listă de parametrii frecvent utilizați pentru era utilizat în mediul Docker Swarm. Cu toate acestea, începând cu Docker 17.06, flagul, aplicabili în comanda de tip docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=\/path\/in\/container
  • readonly

Acum, când am finalizat această serie de materiale despre Docker, a venit timpul să spunem câteva cuvinte despre ce pot studia mai departe cei care învață Docker. Iată un articol mare și bun despre Docker. Iată o carte despre Docker (cumpărând această carte, încercați să obțineți cea mai recentă ediție). Iată încă o carte, care este potrivită pentru cei care consideră că practica este cea mai bună modalitate de a învăța tehnologiile.

Stimați cititori! Ce materiale despre Docker ați recomanda să studieze începătorilor?

Învățăm Docker, partea 6: lucrul cu datele

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster