Sari la conținut

Imaginea de container: ce conține și cum se construiește

Descoperă ce conține o imagine de container, cum o construiește Docker strat cu strat și prin ce diferă de containerul care rulează efectiv.

  • temăCloud și date
  • publicat
  • autorEchipa LumeaTehnologiei
  • lectură4 min de citit
Stivă de containere metalice colorate, privite din lateral
// cuprins7 secțiuni

O imagine de container este un pachet nemodificabil care conține aplicația, bibliotecile de care are nevoie și setările de pornire, totul împreună. Se construiește din straturi succesive, pornind de la un fișier de instrucțiuni, iar din ea se pot lansa oricâte containere identice. Imaginea este rețeta și ingredientele, iar containerul este mâncarea gătită.

Ce conține o imagine?

O imagine conține tot ce este necesar ca aplicația să pornească fără alte instalări: codul, bibliotecile, o mică parte a unui sistem de fișiere de bază și comanda de pornire. Nu conține un sistem de operare complet, ci doar fișierele de care aplicația depinde, deoarece containerul împrumută nucleul sistemului gazdă.

Din acest motiv imaginile sunt mult mai mici decât mașinile virtuale. Dacă vrei să vezi diferența dintre cele două abordări, modul în care funcționează centrele de date arată cum sunt împărțite resursele fizice între multe aplicații.

Cum funcționează straturile?

Fiecare instrucțiune din fișierul de construire adaugă un strat nou peste cele existente, iar straturile sunt doar citite, nu se mai schimbă. Un strat poate fi, de exemplu, sistemul de bază, apoi instalarea unei biblioteci, apoi copierea codului aplicației.

Avantajul este refolosirea. Dacă două imagini pornesc de la același strat de bază, acesta se păstrează o singură dată pe disc și se descarcă o singură dată. La o modificare mică a codului se reconstruiește doar ultimul strat, iar restul vine din memoria de construire.

Ordinea contează

Straturile care se schimbă rar, precum bibliotecile, se pun la început, iar cele care se schimbă des, precum codul tău, la sfârșit. Așa construirea rămâne rapidă, pentru că sistemul refolosește tot ce nu s-a modificat.

Cum se construiește o imagine?

O imagine se construiește pornind de la un fișier text, numit în Docker Dockerfile, care descrie pașii în ordine. Instrumentul de construire îi citește linie cu linie și produce straturile.

  1. Alegi o imagine de bază, adică punctul de plecare, de preferință una mică și întreținută.
  2. Copiezi în ea fișierele aplicației.
  3. Instalezi dependențele necesare.
  4. Stabilești comanda care pornește aplicația.
  5. Rulezi construirea, iar rezultatul primește un nume și o etichetă de versiune.

Imaginea gata construită se păstrează apoi într-un registru, adică un depozit de unde o pot descărca serverele. Fiind nemodificabilă, aceeași imagine rulează identic pe laptopul dezvoltatorului și pe serverul din producție, iar asta reduce discuțiile de tipul „la mine funcționa”.

Imagine sau container: care e diferența?

Imaginea este un șablon static, iar containerul este o instanță a imaginii aflată în execuție. Din aceeași imagine poți porni mai multe containere, fiecare cu propriul proces și propriile fișiere temporare.

Când lansezi un container, sistemul adaugă deasupra straturilor doar citite un strat subțire în care se poate scrie. Tot ce modifică aplicația în timpul rulării ajunge acolo și dispare la ștergerea containerului. De aceea datele care trebuie păstrate se pun în volume separate sau în servicii dedicate, de exemplu stocarea pe obiecte, bloc sau fișiere, nu în interiorul containerului.

Ce trebuie verificat la o imagine?

La o imagine merită verificate sursa, dimensiunea și conținutul. O imagine luată dintr-un registru public poate include software vechi sau vulnerabil, așa că este recomandat să pornești de la surse oficiale și să le actualizezi periodic.

  • Nu include în imagine parole, chei sau fișiere de configurare secrete.
  • Păstrează imaginea cât mai mică, adică doar ce are nevoie aplicația.
  • Folosește etichete de versiune clare în loc de o etichetă generală care se schimbă pe nesimțite.
  • Scanează imaginea cu un instrument de securitate înainte de livrare.

Pentru contextul mai larg al acestor tehnologii, consultă și categoria Cloud și date.

Pe scurt

  • Imaginea este un pachet nemodificabil cu aplicația și dependențele ei.
  • Se construiește din straturi care se refolosesc între imagini.
  • Containerul este imaginea aflată în execuție, cu un strat subțire în care se poate scrie.
  • Datele importante se păstrează în afara containerului, iar secretele nu au ce căuta în imagine.

Întrebări frecvente

Pot modifica o imagine după ce a fost construită?

Nu, straturile unei imagini sunt doar citite. Pentru o schimbare construiești o imagine nouă, care primește o etichetă de versiune diferită.

De ce unele imagini sunt mult mai mari decât altele?

Dimensiunea depinde de imaginea de bază și de ce instalezi în ea. O bază minimală și un număr mic de dependențe dau imagini mici.

Ce se întâmplă cu datele când șterg un container?

Datele scrise în stratul temporar al containerului se pierd. Cele din volume sau din servicii externe rămân disponibile.

// trimite mai departe
// cloud-date

Continuă pe aceeași orbită

Toată tema Cloud și date