Kľúčové informácie
- Pre lepšiu bezpečnosť a výkon použite oficiálne obrázky Docker. Vytváranie vlastných obrázkov môže viesť k nesprávnej konfigurácii a zaberie viac času.
- Použite špecifické verzie obrazov Docker, aby ste sa vyhli nepredvídateľnému správaniu a konfliktom so závislosťami. Ťahajte a stavajte pomocou obrázkov konkrétnej verzie.
- Skenujte obrázky Docker na chyby zabezpečenia pomocou príkazu docker scan. Zistite, či je obrázok dostatočne bezpečný pre vašu aplikáciu.
Docker je najpopulárnejší kontajnerový softvér, no nie každý ho využíva efektívne. Ak sa nebudete riadiť osvedčenými postupmi Docker, môžete svoje aplikácie ponechať zraniteľné voči bezpečnostným problémom alebo problémom s výkonom.
Tu je niekoľko osvedčených postupov, ktoré si môžete osvojiť, aby ste mohli funkcie Docker využívať vynaliezavo. Tieto opatrenia zlepšujú bezpečnosť a zabezpečujú vytváranie udržiavateľných súborov Docker.
1. Použite oficiálne obrázky Docker
Pri kontajnerovaní aplikácie musíte použiť obrázok Docker. Môžete vytvoriť obrázok s vlastnou konfiguráciou alebo použiť oficiálne obrázky Docker.
Vytváranie vlastných obrázkov vyžaduje, aby ste celú konfiguráciu zvládli sami. Ak chcete napríklad vytvoriť obrázok pre aplikáciu node.js, musíte si stiahnuť node.js a jeho závislosti. Tento proces je časovo náročný a nemusí viesť k úplnej správnej konfigurácii.
Docker odporúča použiť oficiálny obrázok node.js, ktorý sa dodáva so všetkými správnymi závislosťami. Obrázky Docker majú lepšie bezpečnostné opatrenia, sú ľahké a testované pre rôzne prostredia. Oficiálne obrázky nájdete na Oficiálne obrázky Dockera stránku.
2. Použite špecifické verzie obrazu Docker
Zvyčajne, keď vytiahnete oficiálny obrázok, je to ten s najnovšou značkou, ktorá predstavuje najnovšiu aktualizovanú verziu tohto obrázka. Zakaždým, keď z tohto obrázka vytvoríte kontajner, je to iná verzia posledného kontajnera.
Vytváranie s rôznymi verziami obrázkov Docker môže spôsobiť nepredvídateľné správanie vo vašej aplikácii. Verzie môžu kolidovať s inými závislosťami a nakoniec spôsobiť zlyhanie vašej aplikácie.
Docker odporúča, aby ste stiahli a zostavili pomocou obrázkov konkrétnej verzie. Oficiálne obrázky majú aj dokumentáciu a pokrývajú najčastejšie prípady použitia.
Napríklad namiesto docker ťahať alpský, použite docker pull alpine: 3.18.3. Docker stiahne túto konkrétnu verziu. Potom ho môžete použiť v následných zostavách, čím sa zníži počet chýb vo vašej aplikácii. Jednotlivé verzie obrázkov nájdete na oficiálnej stránke obrázkov Docker pod Podporované značky a príslušné odkazy na súbor Dockerfile:
3. Skenujte v obrázkoch chyby zabezpečenia
Ako zistíte, že obrázok, ktorý chcete vytvoriť, nemá žiadne bezpečnostné chyby? Naskenovaním. Obrázky Docker môžete skenovať pomocou príkazu docker scan. Syntax je nasledovná:
docker scan [IMAGE]
Ak chcete naskenovať obrázok, musíte sa najprv prihlásiť do dockeru.
docker login
Potom naskenujte konkrétny obrázok, ktorý chcete skontrolovať:
docker scan ubuntu: latest
Nástroj tzv Synk naskenuje obrázok a uvedie všetky zraniteľné miesta podľa ich závažnosti. Môžete vidieť typ zraniteľnosti a odkazy na informácie o nej vrátane toho, ako ju opraviť. Zo skenovania môžete zistiť, či je obrázok dostatočne bezpečný pre vašu aplikáciu.
4. Použite malé obrázky Docker
Keď vytiahnete obraz Docker, prichádza so všetkými systémovými pomôckami. Tým sa zväčší veľkosť obrázka pomocou nástrojov, ktoré nepotrebujete.
Veľké obrázky Docker zaberajú úložný priestor a môžu spomaliť beh kontajnerov. Majú tiež väčšiu možnosť bezpečnostných zraniteľností.
Môžeš zmenšiť veľkosť obrázkov Docker pomocou obrázkov Alpine. Obrazy Alpine sú ľahké a dodávajú sa len s potrebnými nástrojmi. Znižujú úložný priestor, vďaka čomu vaša aplikácia beží rýchlejšie a efektívnejšie.
Pre väčšinu oficiálnych obrázkov na Dockeri nájdete alpskú verziu. Tu je príklad verzií Alpine pre PostgreSQL:
5. Optimalizujte ukladanie obrázkov do vyrovnávacej pamäte
Každý príkaz v Dockerfile predstavuje vrstvu na obrázku. Vrstvy majú rôzne funkcie a plnia rôzne funkcie. Ak sa pozriete na oficiálne obrázky na Docker Hub, uvidíte pokyny použité na ich vytvorenie.
Dockerfile obsahuje všetko, čo potrebujete na vytvorenie obrázka. Je to jeden z dôvodov, prečo mnohí vývojári uprednostňujú Docker pred virtuálnymi strojmi.
Tu je štruktúra príkladu alpského obrázku:
Keď vytvárate aplikáciu na základe obrázka, pridávate do obrázka ďalšie vrstvy. Docker spúšťa pokyny na súbore Docker zhora nadol a ak sa vrstva zmení, Docker musí prebudovať nasledujúce vrstvy.
Najlepšou praxou je usporiadať súbor Dockerfile od najmenej sa meniacich súborov po tie, ktoré sa menia najčastejšie. Pokyny, ktoré sa nemenia, ako napríklad inštalácia, môžu byť v hornej časti súboru.
Keď zmeníte súbor, Docker vytvorí zo zmenených súborov a uloží nezmenené súbory nad ním do vyrovnávacej pamäte. Preto proces prebieha rýchlejšie.
Pozrite sa na príklad znázornený na obrázku vyššie. Ak dôjde k zmene v súboroch aplikácie, Docker vytvorí odtiaľ; nemusí znova inštalovať balíčky npm.
Ak staviate z obrazu, proces bude prebiehať rýchlejšie ako prebudovanie všetkých ostatných vrstiev nanovo. Ukladanie do vyrovnávacej pamäte tiež urýchľuje sťahovanie a odosielanie obrázkov z Docker Hub.
7. Použite súbor .dockerignore
Pri vytváraní obrázka pomocou súboru Dockerfile možno budete chcieť ponechať určité informácie súkromné. Niektoré súbory a priečinky môžu byť súčasťou projektu, ale nechcete ich zahrnúť do procesu zostavovania.
Použitím súboru .dockerignore sa značne zníži veľkosť obrázka. Je to preto, že proces budovania zahŕňa iba potrebné súbory. Pomáha tiež zachovať súkromie súborov a vyhnúť sa odhaleniu tajných kľúčov alebo hesiel.
Súbor .dockerignore je súbor, ktorý vytvoríte v rovnakom priečinku ako váš Dockerfile. Je to textový súbor, podobne súbor .gitignore, ktorý obsahuje názvy všetkých súborov, ktoré nechcete zahrnúť do procesu zostavovania.
Tu je príklad:
8. Použite zásadu najmenej privilegovaného používateľa
V predvolenom nastavení používa Docker používateľa root ako správcu na povolenie spúšťať príkazy, ale to je zlý postup. Ak je v jednom z kontajnerov chyba zabezpečenia, hackeri môžu získať prístup k hostiteľovi Docker.
Ak sa chcete vyhnúť tomuto scenáru, vytvorte vyhradeného používateľa a skupinu. Môžete nastaviť požadované povolenia pre skupinu na ochranu citlivých informácií. Ak dôjde k ohrozeniu používateľa, môžete ho odstrániť bez toho, aby ste odhalili celý projekt.
Tu je príklad, ktorý ukazuje, ako vytvoriť používateľa a nastaviť jeho povolenia:
Niektoré základné obrázky majú v sebe vytvorených pseudoužívateľov. Namiesto oprávnení používateľa root môžete použiť nainštalovaných používateľov.
Prečo by ste mali prijať osvedčené postupy spoločnosti Docker
Osvedčené postupy sú skvelým spôsobom, ako znížiť zraniteľnosti a napísať čistejší kód. Existuje veľa osvedčených postupov, ktoré môžete použiť na každú funkciu Docker, ktorú používate.
Dobre organizovaný projekt uľahčuje synchronizáciu s inými nástrojmi na orchestráciu, ako je Kubernetes. Môžete začať s tými, ktoré sú uvedené v článku, a prijať ďalšie, keď sa naučíte Docker.