6 cele mai bune practici pentru utilizarea containerelor

Să vorbim despre unele dintre cele mai bune practici pe care ar trebui să le urmați în timp ce utilizați containere.


Containerizarea este utilizată pe scară largă în mai multe organizații pentru a implementa aplicații într-un container. Aceste containere sunt populare, deoarece sunt foarte ușoare. Pentru a profita din plin containere, ar trebui să urmați câteva bune practici în timp ce lucrați cu ele.

Utilizați imaginea de bază stabilă

Datorită Docker, crearea de imagini cu container nu a fost niciodată mai simplă.

Specificați imaginea de bază, adăugați-vă modificările și construiți-vă containerul. În timp ce acest lucru este excelent pentru a începe, utilizarea imaginilor de bază implicite poate duce la imagini mari pline de vulnerabilități de securitate. De asemenea, evitați să folosiți imaginea docker-ului „Ultima”, deoarece există o șansă imensă de apariție a unei erori.

Debian sau Ubuntu sunt utilizate ca imagine de bază de majoritatea imaginilor Docker. Sunt foarte utile în ceea ce privește compatibilitatea și ușor de îmbarcat, dar aceste imagini de bază pot adăuga sute de megabyte de aer suplimentare la containerul dvs..

De exemplu, aplicațiile Node.js simple și Go, aplicațiile „hello world” sunt în jur de 700 de megabyți. Aplicația dvs. are probabil o dimensiune de doar câteva megabyte. Așadar, toate aceste cheltuieli suplimentare sunt spațiu irosit și un ascunzătoare pentru vulnerabilitățile și erorile de securitate.

Dacă limbajul sau stiva dvs. de programare nu au o opțiune pentru o imagine de bază mică, puteți să vă construiți containerul folosind materie primă Linux Alpine ca punct de plecare. Acest lucru vă oferă, de asemenea, un control complet asupra a ceea ce intră în containerele dvs..

Păstrați imagini de container mai mici

Utilizarea imaginilor de bază mai mici este probabil cea mai simplă modalitate de a reduce dimensiunea containerului.

Este posibil ca limba sau stiva pe care o utilizați să ofere o imagine oficială mult mai mică decât cea implicită. De exemplu, să aruncăm o privire la containerul Node.js. Trecând de la nodul implicit: ultimul în nod: 14-alpin ne reduce dimensiunea imaginii de bază de aproape zece ori.

Nodejs ultima etichetă - geekflare

vs ….

nodejs alpine tag - geekflare

În noul fișier Docker, containerul începe cu nodul: imagine alpină, creează un director pentru cod, instalează dependențe cu NPM și, în final, pornește serverul Node.js. Cu această actualizare, containerul rezultat este de aproape zece ori mai mic.

Puteți crea containerul și mai ușor folosind modelul constructorului. Cu limbaje interpretative, codul sursă este trimis unui interpret, apoi este executat direct. Dar cu un limbaj compilat, codul sursă este transformat în cod compilat în prealabil.

Acum, cu limbaje de compilare, etapa de compilare necesită adesea instrumente care nu sunt necesare pentru a rula codul. Deci, asta înseamnă că puteți elimina complet aceste unelte din containerul final. Pentru a face acest lucru, puteți utiliza modelul de constructor. Primul container construiește codul, iar apoi codul compilat este ambalat în containerul final fără toate compilatoarele și instrumentele necesare pentru a face codul compilat.

Folosind imagini de bază mici și modelul constructorului sunt modalități excelente de a crea containere mult mai mici, fără multă muncă.

Etichetați-vă imaginile cu containerul

Etichetarea Docker este un instrument excepțional de puternic pentru noi atunci când vine vorba de gestionarea imaginilor noastre. Acesta ajută la gestionarea diferitelor versiuni ale unei imagini docker. Mai jos este prezentat un exemplu de construire a unei imagini docker cu numele etichetei v1.0.1

docker build -t geekflare / ubuntu: v1.0.1

Acum, există două tipuri de etichete utilizate: Grajd Etichete Unic Etichete.

Utilizați etichete stabile pentru menținerea imaginii de bază a containerului. Evitați să utilizați aceste etichete pentru containerele de implementare, deoarece aceste etichete vor primi actualizări frecvente și pot duce la neconcordanțe în mediul de producție.

Utilizați etichete unice pentru implementări. Folosind etichete unice, puteți scala clusterul de producție pe mai multe noduri cu ușurință. Evită inconsecvențele, iar gazdele nu vor trage nicio altă versiune de imagine docker.

De asemenea, ca o bună practică, ar trebui să blocați etichetele de imagine implementate setând activarea scrierii pe false. Acest lucru ajută la eliminarea imaginii dislocate din registru din greșeală.

Securitatea containerului

Mai jos sunt punctele fundamentale pentru a vă asigura că containerul este sigur.

  • Verificați autenticitatea oricărui software pe care îl instalați în container
  • Utilizați imagini sau imagini de andocare semnate cu un control de verificare valid.
  • Asigurați-vă că adresa URL utilizează HTTPS dacă utilizați un depozit de la terți.
  • Includeți tastele GPG potrivite înainte de a utiliza managerul de pachete pentru a actualiza pachetele
  • Nu rulați niciodată aplicațiile ca root. Ar trebui să utilizați întotdeauna directiva utilizatorului din interiorul dockerfile pentru a vă asigura că renunțați la privilegiile utilizatorului.
  • Nu rulați SSH în interiorul containerului.
  • Faceți ca sistemul de fișiere să fie numai de citire.
  • Folosiți spații de nume pentru a vă împărți clusterul.

Punctul de referință pentru Docker a fost furnizat de Centrul pentru Securitatea Internetului (CSI) pentru a evalua securitatea unui container de andocare. Au furnizat un script open-source numit Banc de andocare pentru securitate, pe care îl puteți rula pentru a verifica cât de sigur este un container de andocare.

O aplicație per container

Mașinile virtuale sunt destul de bune pentru a rula mai multe lucruri în paralel, dar când vine vorba de containere, ar trebui să rulați o singură aplicație în interiorul unui container. De exemplu, dacă executați o aplicație MEAN într-un mediu containerizat, atunci ar trebui să aibă un container pentru MongoDB, un container pentru Express.js, un container pentru Angular și un container pentru Node.js.

Chiar și containerele pot rula mai multe aplicații paralele în el, dar atunci puteți profita de modelul containerului. Mai jos este o reprezentare corectă și greșită a aplicațiilor care rulează într-un container.

o singură aplicație un container - geekflare

Containerele sunt proiectate să aibă un ciclu de viață similar cu aplicația pe care o rulează. Când containerul pornește, aplicația va începe. Când un container se oprește, aplicația se oprește și ea.

Rulați containere fără stat

Containerele sunt concepute în mod fundamental pentru a fi apatrizi. În acest caz, datele persistente care conțin informații despre starea containerului sunt stocate în afara containerului. Fișierele pot fi stocate într-un magazin de obiecte, cum ar fi stocarea în cloud, pentru a stoca informații din sesiunea utilizatorului, puteți utiliza o bază de date cu latență scăzută, cum ar fi Redis și puteți atașa un disc extern pentru stocarea la nivel de bloc.

Păstrând stocarea în afara containerului, puteți închide sau distruge cu ușurință un container fără teama de a pierde date.

Dacă utilizați containere apatride, este foarte ușor să migreze sau să se extindă în funcție de nevoile companiei.

Concluzie

Cele de mai sus sunt câteva dintre cele mai importante practici pe care trebuie să le urmați în timp ce lucrați cu containerele dacă construiți un mediu de producție Docker, apoi verificați cum să îl securizați.

ETICHETE:

  • Docher

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map