Recomandări cheie

  • Utilizați imagini oficiale Docker pentru o securitate și o performanță mai bune. Crearea propriilor imagini poate duce la o configurație incorectă și necesită mai mult timp.
  • Utilizați versiuni specifice de imagini Docker pentru a evita comportamentul imprevizibil și ciocnirile cu dependențele. Trageți și construiți folosind imagini ale unei anumite versiuni.
  • Scanați imaginile Docker pentru vulnerabilități de securitate utilizând comanda de scanare docker. Stabiliți dacă o imagine este suficient de sigură pentru aplicația dvs.

Docker este cel mai popular software de containerizare, dar nu toată lumea îl folosește eficient. Dacă nu urmați cele mai bune practici Docker, puteți lăsa aplicațiile vulnerabile la probleme de securitate sau de performanță.

Iată câteva dintre cele mai bune practici pe care le puteți adopta pentru a utiliza funcțiile Docker cu resurse. Aceste măsuri îmbunătățesc securitatea și vă asigură că creați fișiere Docker care pot fi întreținute.

1. Utilizați imagini oficiale Docker

instagram viewer

Când vă containerizați aplicația, trebuie să utilizați o imagine Docker. Puteți crea o imagine cu configurație personalizată sau puteți utiliza imaginile oficiale ale Docker.

Construirea propriilor imagini necesită să vă gestionați singur toată configurația. De exemplu, pentru a construi o imagine pentru o aplicație node.js, trebuie să descărcați node.js și dependențele sale. Procesul necesită timp și este posibil să nu aibă ca rezultat configurația corectă.

Docker vă recomandă să utilizați o imagine oficială node.js care vine cu toate dependențele corecte. Imaginile Docker au măsuri de securitate mai bune, sunt ușoare și sunt testate pentru diferite medii. Poți găsi imagini oficiale pe Imaginile oficiale ale lui Docker pagină.

2. Utilizați versiuni specifice ale Docker Image

De obicei, când trageți o imagine oficială, aceasta este cea cu cea mai recentă etichetă care reprezintă cea mai recentă versiune actualizată a acelei imagini. De fiecare dată când construiți un container din imaginea respectivă, este o versiune diferită a ultimului container.

Construirea cu diferite versiuni de imagine Docker poate provoca un comportament imprevizibil în aplicația dvs. Versiunile pot intra în conflict cu alte dependențe și, în cele din urmă, pot duce la eșuarea aplicației.

Docker recomandă să trageți și să construiți folosind imagini ale unei anumite versiuni. Imaginile oficiale au, de asemenea, documentație și acoperă cele mai frecvente cazuri de utilizare.

De exemplu, în loc de docker pull alpin, utilizare docker pull alpin: 3.18.3. Docker va extrage acea versiune specifică. Apoi îl puteți utiliza în versiuni succesive, reducând erorile din aplicația dvs. Puteți găsi versiunile particulare ale imaginilor pe pagina oficială de imagini Docker, sub Etichete acceptate și link-urile Dockerfile corespunzătoare:

3. Scanați imagini pentru vulnerabilități de securitate

Cum puteți determina că o imagine cu care doriți să o construiți nu are vulnerabilități de securitate? Prin scanarea lui. Puteți scana imagini Docker folosind comanda de scanare docker. Sintaxa este următoarea:

docker scan [IMAGE]

Mai întâi trebuie să vă conectați la docker pentru a scana o imagine.

docker login

Apoi, scanați imaginea specifică pe care doriți să o verificați:

docker scan ubuntu: latest

Un instrument numit Synk scanează imaginea, listând eventualele vulnerabilități în funcție de gravitatea acestora. Puteți vedea tipul de vulnerabilitate și link-uri către informații despre aceasta, inclusiv cum să o remediați. Vă puteți da seama din scanare dacă imaginea este suficient de sigură pentru aplicația dvs.

4. Utilizați imagini Docker de dimensiuni mici

Când trageți o imagine Docker, aceasta vine cu toate utilitățile de sistem. Acest lucru mărește dimensiunea imaginii cu instrumente de care nu aveți nevoie.

Imaginile mari Docker ocupă spațiu de stocare și pot încetini timpul de rulare a containerelor. De asemenea, au o posibilitate mai mare de vulnerabilități de securitate.

Puteți reduceți dimensiunea imaginilor Docker folosind imagini Alpine. Imaginile alpine sunt ușoare și vin doar cu instrumentele necesare. Acestea reduc spațiul de stocare, făcând aplicația să ruleze mai rapid și mai eficient.

Veți găsi o versiune alpină pentru majoritatea imaginilor oficiale de pe Docker. Iată un exemplu de versiuni Alpine pentru PostgreSQL:

5. Optimizați stocarea în cache a straturilor de imagine

Fiecare comandă dintr-un Dockerfile reprezintă un strat pe imagine. Straturile au utilități diferite și îndeplinesc diferite funcții. Dacă te uiți la imaginile oficiale de pe Docker Hub, vei vedea instrucțiunile folosite pentru a le crea.

Dockerfile include tot ce aveți nevoie pentru a crea imaginea. Este unul dintre motivele pentru care mulți dezvoltatorii preferă Docker în locul mașinilor virtuale.

Iată structura unui exemplu de imagine alpină:

Când construiți aplicația pe baza unei imagini, adăugați mai multe straturi imaginii. Docker rulează instrucțiuni pe un fișier Docker de sus în jos și, dacă un strat se schimbă, Docker trebuie să reconstruiască straturile ulterioare.

Cea mai bună practică este să vă aranjați fișierul Dockerfile de la fișierele care se schimbă cel mai puțin la cele care se schimbă cel mai des. Instrucțiunile care nu se modifică, cum ar fi instalarea, pot fi în partea de sus a fișierului.

Când modificați un fișier, Docker creează din fișierele modificate și memorează în cache fișierele neschimbate de deasupra acestuia. Prin urmare, procesul rulează mai rapid.

Priviți exemplul ilustrat în imaginea de mai sus. Dacă există o modificare în fișierele aplicației, Docker se construiește de acolo; nu trebuie să instaleze din nou pachetele npm.

Dacă construiți din imagine, procesul va rula mai rapid decât reconstruirea tuturor celorlalte straturi din nou. Memorarea în cache accelerează, de asemenea, extragerea și împingerea imaginilor din Docker Hub.

7. Utilizați un fișier .dockerignore

Când construiți o imagine folosind un fișier Docker, este posibil să doriți să păstrați anumite informații private. Unele fișiere și foldere pot face parte din proiect, dar nu doriți să le includeți în procesul de construire.

Utilizarea unui fișier .dockerignore reduce considerabil dimensiunea imaginii. Acest lucru se datorează faptului că procesul de construire include doar fișierele necesare. De asemenea, ajută la păstrarea confidențialității fișierelor și la evitarea expunerii cheilor sau parolelor secrete.

Fișierul .dockerignore este un fișier pe care îl creați în același folder ca și fișierul dvs. Docker. Este un fișier text, la fel ca un fișier .gitignore, care conține numele oricăror fișiere pe care nu doriți să le includeți în procesul de compilare.

Iată un exemplu:

8. Utilizați principiul utilizatorului cel mai puțin privilegiat

În mod implicit, Docker folosește utilizatorul root ca administrator pentru permisiunea de a rula comenzi, dar aceasta este o practică proastă. Dacă există o vulnerabilitate într-unul dintre containere, hackerii pot accesa gazda Docker.

Pentru a evita acest scenariu, creați un utilizator și un grup dedicat. Puteți seta permisiunile necesare pentru grup pentru a proteja informațiile sensibile. Dacă un utilizator este compromis, îl puteți șterge fără a expune întregul proiect.

Iată un exemplu care arată cum să creați un utilizator și să îi setați permisiunile:

Unele imagini de bază au pseudo-utilizatori creați în ele. Puteți folosi utilizatorii instalați în loc de permisiunile utilizatorului root.

De ce ar trebui să adoptați cele mai bune practici ale Docker

Cele mai bune practici sunt o modalitate excelentă de a reduce vulnerabilitățile și de a scrie cod mai curat. Există multe bune practici pe care le puteți aplica fiecărei funcții Docker pe care o utilizați.

Un proiect bine organizat facilitează sincronizarea cu alte instrumente de orchestrare precum Kubernetes. Puteți începe cu cele prezentate în articol și puteți adopta mai multe pe măsură ce învățați Docker.