Optimera Docker-avbildningar

Docker för medelnivå

Mike Metzger

Data Engineering Consultant

Vad är en Docker-avbildning?

  • Docker-avbildningar är grunden för en given container
  • Innehåller allt som från start är tillgängligt för en containerinstans
Docker för medelnivå

Problem med Docker-avbildningar

  • Frestande att lägga till alla möjliga komponenter i en avbildning
  • Storleken blir stor och svårhanterlig
  • Säkerhet och uppdateringar försvåras av beroendeproblem
  • Svårare att kombinera containers utan att slösa utrymme och bandbredd
Docker för medelnivå

Rekommendationer för Docker-avbildningar

  • Dela upp containers till minsta möjliga enhet
  • Enklare att kombinera flera containers än att bygga en enda stor avbildning
  • Liknar
    • att bygga med återanvändbara komponenter
    • kontra att börja om från grunden varje gång
  • Uppdateringar av specifik programvara påverkar bara containers som använder den avbildningen
  • Möjligt att optimera storlek, vilket underlättar användning och distribution
Docker för medelnivå

Exempel på uppdelning av Docker-avbildning

  • Tänk dig ett datatekniskt projekt med följande programvara:

    • Postgresql-databas
    • Python ETL-programvara
    • Webbserverprogramvara
  • Möjligt att använda en enda avbildning, men vi skulle behöva uppdatera den vid varje ändring i ETL- eller webbservermiljön.

  • Vad händer om vi behöver lägga till ytterligare en webbserver?
FROM ubuntu
RUN apt update
RUN apt install -y postgresql
RUN apt install -y nginx
RUN apt install -y python3.9
...
Docker för medelnivå

Exempel med minimerade containers

  • Bättre alternativ med Docker
  • Dela upp varje del i sin egen container
    • Postgresql-databascontainer
    • Python ETL-komponenter
    • Webbserver
  • Möjligt att bygga en optimerad konfiguration och lägga till eller ta bort komponenter efter behov
bash> docker run -d postgresql:latest

bash> docker run -d nginx:latest ...
Docker för medelnivå

Bestämma avbildningsstorlek

  • Använd docker images
  • Visar information om enskilda avbildningar, inklusive storlek
  • Fler avancerade alternativ tas upp senare

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
Docker för medelnivå

Nu kör vi en övning!

Docker för medelnivå

Preparing Video For Download...