Ključni zahvati

  • Koristite službene Docker slike za bolju sigurnost i izvedbu. Izrada vlastitih slika može rezultirati netočnom konfiguracijom i oduzima više vremena.
  • Koristite određene verzije Docker slika kako biste izbjegli nepredvidivo ponašanje i sukobe s ovisnostima. Povucite i izgradite koristeći slike određene verzije.
  • Skenirajte Docker slike u potrazi za sigurnosnim propustima pomoću naredbe docker scan. Odredite je li slika dovoljno sigurna za vašu aplikaciju.

Docker je najpopularniji softver za kontejnerizaciju, no ne koriste ga svi učinkovito. Ako ne slijedite najbolje Dockerove prakse, svoje aplikacije možete ostaviti ranjivima na sigurnosne probleme ili probleme s performansama.

Evo nekoliko najboljih praksi koje možete usvojiti kako biste snalažljivo koristili značajke Dockera. Ove mjere poboljšavaju sigurnost i osiguravaju stvaranje Docker datoteka koje se mogu održavati.

1. Koristite službene Docker slike

Kada kontejnerizirate svoju aplikaciju, morate koristiti Docker sliku. Možete izraditi sliku s prilagođenom konfiguracijom ili koristiti Dockerove službene slike.

instagram viewer

Izrada vlastitih slika zahtijeva da sami upravljate cijelom konfiguracijom. Na primjer, da biste izradili sliku za aplikaciju node.js, morate preuzeti node.js i njegove ovisnosti. Proces je dugotrajan i možda neće rezultirati ispravnom konfiguracijom.

Docker preporučuje korištenje službene slike node.js koja dolazi sa svim ispravnim ovisnostima. Docker slike imaju bolje sigurnosne mjere, lagane su i testirane za različita okruženja. Službene slike možete pronaći na Dockerove službene slike stranica.

2. Koristite određene verzije Docker slike

Obično, kada povučete službenu sliku, to je ona s najnovijom oznakom koja predstavlja posljednju ažuriranu verziju te slike. Svaki put kada napravite spremnik od te slike, to je drugačija verzija zadnjeg spremnika.

Izrada s različitim verzijama Docker slike može uzrokovati nepredvidivo ponašanje u vašoj aplikaciji. Verzije se mogu sukobiti s drugim ovisnostima i na kraju uzrokovati neuspjeh vaše aplikacije.

Docker preporučuje da povlačite i gradite koristeći slike određene verzije. Službene slike također imaju dokumentaciju i pokrivaju najčešće slučajeve upotrebe.

Na primjer, umjesto docker povući alpine, koristiti docker pull alpine: 3.18.3. Docker će povući tu specifičnu verziju. Zatim ga možete koristiti u uzastopnim izgradnjama, smanjujući pogreške u svojoj aplikaciji. Određene verzije slika možete pronaći na službenoj stranici Docker slika, pod Podržane oznake i odgovarajuće veze na Dockerfile:

3. Skenirajte slike radi sigurnosnih propusta

Kako možete utvrditi da slika koju želite izgraditi nema sigurnosnih propusta? Skenirajući ga. Docker slike možete skenirati pomoću naredbe docker scan. Sintaksa je sljedeća:

docker scan [IMAGE]

Prvo se morate prijaviti na Docker kako biste skenirali sliku.

docker login

Zatim skenirajte određenu sliku koju želite provjeriti:

docker scan ubuntu: latest

Alat tzv Sink skenira sliku, navodeći sve ranjivosti prema njihovoj ozbiljnosti. Možete vidjeti vrstu ranjivosti i veze na informacije o njoj, uključujući kako je popraviti. Iz skeniranja možete vidjeti je li slika dovoljno sigurna za vašu aplikaciju.

4. Koristite Docker slike male veličine

Kada povučete Docker sliku, dolazi sa svim uslužnim programima sustava. Ovo povećava veličinu slike pomoću alata koji vam nisu potrebni.

Velike Docker slike zauzimaju prostor za pohranu i mogu usporiti rad spremnika. Također imaju veću mogućnost sigurnosnih propusta.

Možeš smanjite veličinu Docker slika pomoću Alpine slika. Alpine slike su lagane i dolaze sa samo potrebnim alatima. Oni smanjuju prostor za pohranu, čineći vašu aplikaciju bržom i učinkovitijom.

Pronaći ćete Alpine verziju za većinu službenih slika na Dockeru. Evo primjera Alpine verzija za PostgreSQL:

5. Optimizirajte predmemoriranje slojeva slika

Svaka naredba u Docker datoteci predstavlja sloj na slici. Slojevi imaju različite uslužne djelatnosti i obavljaju različite funkcije. Ako pogledate službene slike na Docker Hubu, vidjet ćete upute korištene za njihovu izradu.

Dockerfile uključuje sve što vam je potrebno za izradu slike. To je jedan od razloga zašto mnogi programeri preferiraju Docker nego virtualne strojeve.

Evo strukture primjera alpske slike:

Kada gradite svoju aplikaciju na temelju slike, dodajete joj više slojeva. Docker pokreće upute na Docker datoteci od vrha do dna, a ako se sloj promijeni, Docker mora ponovno izgraditi sljedeće slojeve.

Najbolja praksa je rasporediti svoju Dockerfile od datoteka koje se najmanje mijenjaju do onih koje se najčešće mijenjaju. Upute koje se ne mijenjaju, poput instalacije, mogu biti na vrhu datoteke.

Kada promijenite datoteku, Docker gradi iz promijenjenih datoteka i pohranjuje nepromijenjene datoteke iznad nje. Stoga se proces odvija brže.

Pogledajte primjer ilustriran na gornjoj slici. Ako postoji promjena u datotekama aplikacije, Docker gradi od tamo; ne mora ponovno instalirati npm pakete.

Ako gradite iz slike, proces će se odvijati brže nego ponovna izgradnja svih ostalih slojeva. Predmemoriranje također ubrzava povlačenje i guranje slika iz Docker Huba.

7. Koristite datoteku .dockerignore

Kada gradite sliku pomoću Dockerfilea, možda ćete željeti zadržati neke informacije privatnima. Neke datoteke i mape mogu biti dio projekta, ali ih ne želite uključiti u proces izgradnje.

Korištenje datoteke .dockerignore značajno smanjuje veličinu slike. To je zato što proces izgradnje uključuje samo potrebne datoteke. Također pomaže u očuvanju privatnosti datoteka i izbjegavanju otkrivanja tajnih ključeva ili lozinki.

Datoteka .dockerignore je datoteka koju stvorite u istoj mapi kao i vaša Dockerfile. To je tekstualna datoteka, slično .gitignore datoteka, koji sadrži nazive svih datoteka koje ne želite uključiti u proces izgradnje.

Evo primjera:

8. Koristite načelo najmanje privilegiranog korisnika

Prema zadanim postavkama, Docker koristi root korisnika kao administratora za dopuštenje za pokretanje naredbi, ali to je loša praksa. Ako postoji ranjivost u jednom od spremnika, hakeri mogu pristupiti Docker hostu.

Da biste izbjegli ovaj scenarij, stvorite namjenskog korisnika i grupu. Možete postaviti potrebna dopuštenja za grupu kako biste zaštitili osjetljive informacije. Ako korisnik bude ugrožen, možete ga izbrisati bez izlaganja cijelog projekta.

Evo primjera koji pokazuje kako stvoriti korisnika i postaviti njegova dopuštenja:

Neke osnovne slike imaju stvorene pseudo-korisnike. Možete koristiti instalirane korisnike umjesto root korisničkih dozvola.

Zašto biste trebali usvojiti Dockerove najbolje prakse

Najbolje prakse izvrstan su način za smanjenje ranjivosti i pisanje čišćeg koda. Postoje mnoge najbolje prakse koje možete primijeniti na svaku Docker značajku koju koristite.

Dobro organiziran projekt olakšava sinkronizaciju s drugim alatima za orkestriranje kao što je Kubernetes. Možete početi s onima navedenima u članku i usvajati više dok učite Docker.