Î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.
→
→
→
→
→
→
Rețineți că acest material a fost pregătit folosind engine-ul Docker versiunea 18.09.1 și API versiunea .
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 montarea tmpfs și tehnologia bind mount.

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_volumePrin 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 lsPentru 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_volumePentru 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 pruneAceasta 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 , sau . Aici vorbim despre volume, adică — ne interesează valoareavolum.source— sursa de montare. Pentru volumele denominate aceasta este — numele volumului. Pentru volumele ne-denominate, această cheie nu este specificată. Poate fi abreviată lasrc.destination— calea la care fișierul sau folderul este montat în container. Această cheie poate fi abreviată ladstsaudestinația.readonly— montează un volum care este destinat . 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_imageConcluzii
Iată comenzi utile care pot fi folosite atunci când lucrați cu volume Docker:
docker volume createdocker volume lsdocker volume inspectdocker volume rmdocker 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=volumesource=volume_namedestination=\/path\/in\/containerreadonly
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. un articol mare și bun despre Docker. o carte despre Docker (cumpărând această carte, încercați să obțineți cea mai recentă ediție). î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?
Sursa: habr.com
