Optimalizace Docker obrazů

Intermediate Docker

Mike Metzger

Data Engineering Consultant

Vysvětlení Docker obrazu

  • Docker obraz je základ daného kontejneru
  • Obsahuje veškerý obsah dostupný instanci kontejneru při spuštění
Intermediate Docker

Problémy s Docker obrazy

  • Lákavé přidat do obrazu všechny potenciálně potřebné komponenty
  • Velikost se stává velkou / nepraktickou
  • Obtížná správa zabezpečení / aktualizací kvůli závislostem
  • Kombinování kontejnerů je náročnější a plýtvá místem / přenosem dat
Intermediate Docker

Doporučení pro Docker obrazy

  • Rozdělte kontejnery na nejmenší potřebnou jednotku
  • Kombinování více kontejnerů je snazší než sestavení jednoho velkého obrazu
  • Podobně jako
    • stavba ze znovupoužitelných komponent
    • oproti stavbě od začátku pokaždé
  • Aktualizace softwaru ovlivní pouze kontejnery využívající daný obraz
  • Lze optimalizovat velikost, což usnadňuje použití i distribuci
Intermediate Docker

Příklad rozdělení Docker obrazu

  • Uvažujme projekt datového inženýrství využívající následující software:
    • Databáze PostgreSQL
    • Python ETL software
    • Software webového serveru
  • Lze použít jeden obraz, ale bylo by nutné jej aktualizovat při každé změně ETL nebo webového serveru.
  • Co by se stalo, kdybychom potřebovali přidat další webový server?
FROM ubuntu
RUN apt update
RUN apt install -y postgresql
RUN apt install -y nginx
RUN apt install -y python3.9
...
Intermediate Docker

Příklad s minimalizovanými kontejnery

  • Lepší možnosti s Dockerem
  • Rozdělení do samostatných kontejnerů
    • Kontejner s databází PostgreSQL
    • Komponenty Python ETL
    • Webový server
  • Lze sestavit optimalizovanou konfiguraci a přidávat / odebírat komponenty dle potřeby
bash> docker run -d postgresql:latest

bash> docker run -d nginx:latest ...
Intermediate Docker

Zjišťování velikosti obrazu

  • Použití docker images
  • Zobrazí podrobnosti o obrazech včetně velikosti
  • Pokročilejší možnosti budou probrány později

bash> docker images

REPOSITORY      TAG              SIZE
postgres        latest           448MB
postgres        15               442MB
apache/airflow  2.7.1-python3.9  1.4GB
alpine          latest           7.73MB
Intermediate Docker

Pojďme si procvičit!

Intermediate Docker

Preparing Video For Download...