Optimizarea imaginilor Docker

Docker intermediar

Mike Metzger

Data Engineering Consultant

Explicarea imaginilor Docker

  • Imaginile Docker reprezintă baza unui container
  • Conțin tot conținutul disponibil inițial unei instanțe de container
Docker intermediar

Probleme cu imaginile Docker

  • Tentația de a adăuga toate componentele posibile într-o imagine
  • Dimensiunea devine mare și dificil de gestionat
  • Securitatea și actualizările sunt complicate din cauza dependențelor
  • Mai dificil de combinat containere fără a risipi spațiu/lățime de bandă
Docker intermediar

Recomandări pentru imaginile Docker

  • Împărțiți containerele la cel mai mic nivel necesar
  • Mai ușor de combinat ulterior decât să construiți o singură imagine mare
  • Similar cu
    • construirea cu componente reutilizabile
    • față de construirea de la zero de fiecare dată
  • Actualizările afectează doar containerele care utilizează acea imagine
  • Optimizare pentru dimensiune, simplificând utilizarea și distribuția
Docker intermediar

Exemplu de structurare a imaginilor Docker

  • Considerați un proiect de inginerie a datelor cu următoarele componente:

    • Bază de date Postgresql
    • Software Python ETL
    • Software server web
  • Se poate utiliza o singură imagine, dar ar trebui actualizată la fiecare modificare a ETL-ului sau a serverului web.

  • Ce s-ar întâmpla dacă am adăuga un alt server web?
FROM ubuntu
RUN apt update
RUN apt install -y postgresql
RUN apt install -y nginx
RUN apt install -y python3.9
...
Docker intermediar

Exemplu cu containere minimizate

  • Opțiuni mai bune cu Docker
  • Fiecare componentă în propriul container
    • Container bază de date Postgresql
    • Componente Python ETL
    • Server web
  • Configurație optimizată pentru nevoile noastre; componente pot fi adăugate/eliminate după necesitate
bash> docker run -d postgresql:latest

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

Determinarea dimensiunii imaginii

  • Folosind docker images
  • Afișează detalii despre fiecare imagine, inclusiv dimensiunea
  • Opțiuni avansate prezentate ulterior

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 intermediar

Să exersăm!

Docker intermediar

Preparing Video For Download...