Docker imajlarını optimize etme

Orta Düzey Docker

Mike Metzger

Data Engineering Consultant

Docker imajı açıklaması

  • Docker imajları, belirli bir konteynerin temelidir
  • Bir konteyner örneğine başlangıçta sunulan tüm içeriği barındırır
Orta Düzey Docker

Docker imajı endişeleri

  • Potansiyel olarak gereken tüm bileşenleri bir imaja eklemek cazip gelir
  • Boyut büyük/yorucu hâle gelir
  • Bağımlılıklar nedeniyle güvenlik/güncellemeler zorlaşır
  • Alan/bant genişliği israf etmeden konteynerleri birleştirmek zorlaşır
Orta Düzey Docker

Docker imajı önerileri

  • Konteynerleri gereken en küçük seviyeye bölün
  • Tek büyük bir imaj yerine sonradan birden çok konteyneri birleştirmek daha kolaydır
  • Şuna benzer
    • yeniden kullanılabilir bileşenlerle inşa etmek
    • her seferinde sıfırdan kurmaya karşı
  • Belirli yazılım güncellemeleri, güncellemeyi gerektiren tüm konteynerler yerine yalnızca o imajı kullananları etkiler
  • Boyutu optimize edebilir, kullanım ve dağıtımı çok daha kolay hâle getirebilirsiniz
Orta Düzey Docker

Docker imajı parçalama örneği

  • Aşağıdaki yazılımları kullanan bir veri mühendisliği projesini düşünün:

    • Postgresql veritabanı
    • Python ETL yazılımı
    • Web sunucusu yazılımı
  • Tek bir imaj kullanmak mümkün, ancak ETL veya web sunucusu kurulumu her güncellendiğinde imajı güncellememiz gerekir

  • Başka bir web sunucusu eklememiz gerekse ne olur?
FROM ubuntu
RUN apt update
RUN apt install -y postgresql
RUN apt install -y nginx
RUN apt install -y python3.9
...
Orta Düzey Docker

En aza indirgenmiş konteynerlerle örnek

  • Docker ile daha iyi seçenekler
  • Her birini kendi konteynerine ayırın
    • Postgresql veritabanı konteyneri
    • Python ETL bileşenleri
    • Web sunucusu
  • İhtiyacımıza göre optimize edilmiş bir yapılandırma kurabilir, gerekirse bileşen ekleyip çıkarabiliriz
bash> docker run -d postgresql:latest

bash> docker run -d nginx:latest ...
Orta Düzey Docker

İmaj boyutunu belirleme

  • docker images kullanma
  • Boyut dâhil tekil imaj ayrıntılarını gösterir
  • Daha kapsamlı seçenekler ileride ele alınacaktır

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
Orta Düzey Docker

Hadi pratik yapalım!

Orta Düzey Docker

Preparing Video For Download...