Ključni zaključki

  • Uporabite uradne slike Docker za boljšo varnost in zmogljivost. Sestavljanje lastnih slik lahko povzroči nepravilno konfiguracijo in traja več časa.
  • Uporabite posebne različice slik Docker, da se izognete nepredvidljivemu vedenju in navzkrižju z odvisnostmi. Potegnite in zgradite z uporabo slik določene različice.
  • Skenirajte slike Docker za varnostne ranljivosti z ukazom docker scan. Ugotovite, ali je slika dovolj varna za vašo aplikacijo.

Docker je najbolj priljubljena programska oprema za shranjevanje vsebnikov, vendar je vsi ne uporabljajo učinkovito. Če ne upoštevate najboljših praks Dockerja, lahko svoje aplikacije pustite ranljive za varnostne težave ali težave z delovanjem.

Tukaj je nekaj najboljših praks, ki jih lahko sprejmete za iznajdljivo uporabo funkcij Docker. Ti ukrepi izboljšujejo varnost in zagotavljajo, da ustvarite datoteke Docker, ki jih je mogoče vzdrževati.

1. Uporabite uradne slike Dockerja

Ko svojo aplikacijo spreminjate v vsebnike, morate uporabiti sliko Docker. Ustvarite lahko sliko s konfiguracijo po meri ali uporabite Dockerjeve uradne slike.

instagram viewer

Izdelava lastnih slik zahteva, da sami uredite celotno konfiguracijo. Na primer, če želite zgraditi sliko za aplikacijo node.js, morate prenesti node.js in njegove odvisnosti. Postopek je dolgotrajen in morda ne bo privedel do pravilne konfiguracije.

Docker priporoča, da uporabite uradno sliko node.js, ki vsebuje vse pravilne odvisnosti. Docker slike imajo boljše varnostne ukrepe, so lahke in testirane za različna okolja. Uradne slike najdete na Dockerjeve uradne slike strani.

2. Uporabite posebne različice slike Docker

Običajno, ko potegnete uradno sliko, je tista z najnovejšo oznako, ki predstavlja zadnjo posodobljeno različico te slike. Vsakič, ko sestavite vsebnik iz te slike, je to drugačna različica zadnjega vsebnika.

Gradnja z različnimi različicami slike Docker lahko povzroči nepredvidljivo vedenje vaše aplikacije. Različice so lahko v nasprotju z drugimi odvisnostmi in sčasoma povzročijo neuspeh vaše aplikacije.

Docker priporoča, da vlečete in gradite z uporabo slik določene različice. Uradne slike imajo tudi dokumentacijo in pokrivajo najpogostejše primere uporabe.

Na primer, namesto docker pull alpine, uporaba docker pull alpine: 3.18.3. Docker bo potegnil to specifično različico. Nato ga lahko uporabite v zaporednih izgradnjah, s čimer zmanjšate napake v aplikaciji. Določene različice slik najdete na uradni strani s slikami Docker pod Podprte oznake in ustrezne povezave Dockerfile:

3. Preglejte slike za varnostne ranljivosti

Kako lahko ugotovite, da slika, s katero želite zgraditi, nima varnostnih ranljivosti? S skeniranjem. Slike Docker lahko skenirate z ukazom docker scan. Sintaksa je naslednja:

docker scan [IMAGE]

Za skeniranje slike se morate najprej prijaviti v Docker.

docker login

Nato skenirajte določeno sliko, ki jo želite preveriti:

docker scan ubuntu: latest

Orodje imenovano Sink skenira sliko in navede morebitne ranljivosti glede na njihovo resnost. Vidite lahko vrsto ranljivosti in povezave do informacij o njej, vključno s tem, kako jo odpraviti. Iz skeniranja lahko ugotovite, ali je slika dovolj varna za vašo aplikacijo.

4. Uporabite Docker slike majhne velikosti

Ko potegnete sliko Dockerja, pride z vsemi sistemskimi pripomočki. To poveča velikost slike z orodji, ki jih ne potrebujete.

Velike slike Docker zavzamejo prostor za shranjevanje in lahko upočasnijo čas izvajanja vsebnikov. Imajo tudi večjo možnost varnostnih ranljivosti.

Ti lahko zmanjšajte velikost slik Docker z uporabo slik Alpine. Slike Alpine so lahke in imajo samo potrebna orodja. Zmanjšajo prostor za shranjevanje, zaradi česar vaša aplikacija deluje hitreje in učinkoviteje.

Za večino uradnih slik na Dockerju boste našli alpsko različico. Tu je primer različic Alpine za PostgreSQL:

5. Optimizirajte predpomnilniške plasti slik

Vsak ukaz v datoteki Dockerfile predstavlja plast na sliki. Plasti imajo različne pripomočke in opravljajo različne funkcije. Če si ogledate uradne slike na Docker Hubu, boste videli navodila za njihovo ustvarjanje.

Dockerfile vključuje vse, kar potrebujete za ustvarjanje slike. To je eden od razlogov, zakaj mnogi razvijalci imajo raje Docker kot virtualne stroje.

Tukaj je struktura primera alpske slike:

Ko svojo aplikacijo sestavite na podlagi slike, sliki dodate več plasti. Docker izvaja navodila v datoteki Docker od zgoraj navzdol in če se plast spremeni, mora Docker znova zgraditi naslednje plasti.

Najboljša praksa je, da svoj Dockerfile uredite od datotek, ki se najmanj spreminjajo, do tistih, ki se spreminjajo najpogosteje. Navodila, ki se ne spreminjajo, na primer namestitev, so lahko na vrhu datoteke.

Ko spremenite datoteko, Docker gradi iz spremenjenih datotek in predpomni nespremenjene datoteke nad njo. Zato proces teče hitreje.

Oglejte si primer, prikazan na zgornji sliki. Če pride do spremembe v datotekah aplikacije, Docker gradi od tam; ni mu treba znova namestiti paketov npm.

Če gradite iz slike, bo postopek potekal hitreje kot vnovična izgradnja vseh drugih plasti. Predpomnjenje tudi pospeši vlečenje in potiskanje slik iz Docker Huba.

7. Uporabite datoteko .dockerignore

Ko gradite sliko z uporabo datoteke Dockerfile, boste morda želeli nekatere informacije ohraniti zasebne. Nekatere datoteke in mape so lahko del projekta, vendar jih ne želite vključiti v postopek gradnje.

Uporaba datoteke .dockerignore znatno zmanjša velikost slike. To je zato, ker proces gradnje vključuje samo potrebne datoteke. Pomaga tudi pri ohranjanju zasebnosti datotek in preprečevanju razkritja skrivnih ključev ali gesel.

Datoteka .dockerignore je datoteka, ki jo ustvarite v isti mapi kot vaša Dockerfile. To je besedilna datoteka, podobno kot datoteko .gitignore, ki vsebuje imena vseh datotek, ki jih ne želite vključiti v postopek izdelave.

Tukaj je primer:

8. Uporabite načelo najmanj privilegiranega uporabnika

Docker privzeto uporablja uporabnika root kot skrbnika za dovoljenje za izvajanje ukazov, vendar je to slaba praksa. Če je v enem od vsebnikov ranljivost, lahko hekerji dostopajo do gostitelja Docker.

Če se želite izogniti temu scenariju, ustvarite namenskega uporabnika in skupino. Za zaščito občutljivih podatkov lahko nastavite potrebna dovoljenja za skupino. Če je uporabnik ogrožen, ga lahko izbrišete, ne da bi razkrili celoten projekt.

Tu je primer, ki prikazuje, kako ustvariti uporabnika in nastaviti njegova dovoljenja:

Nekatere osnovne slike imajo ustvarjene psevdo uporabnike. Namesto dovoljenj korenskega uporabnika lahko uporabite nameščene uporabnike.

Zakaj bi morali sprejeti Dockerjeve najboljše prakse

Najboljše prakse so odličen način za zmanjšanje ranljivosti in pisanje čistejše kode. Obstaja veliko najboljših praks, ki jih lahko uporabite za vsako funkcijo Docker, ki jo uporabljate.

Dobro organiziran projekt olajša sinhronizacijo z drugimi orodji za orkestracijo, kot je Kubernetes. Začnete lahko s tistimi, ki so opisani v članku, in jih usvojite, ko se naučite Dockerja.