Mengoptimalkan image Docker

Docker Tingkat Menengah

Mike Metzger

Data Engineering Consultant

Penjelasan image Docker

  • Image Docker adalah basis sebuah kontainer
  • Menyimpan semua konten awal yang tersedia bagi instance kontainer
Docker Tingkat Menengah

Kekhawatiran tentang image Docker

  • Menggoda untuk menambahkan semua komponen yang mungkin dibutuhkan ke dalam satu image
  • Ukuran menjadi besar/sulit dikelola
  • Sulit menangani keamanan/pembaruan karena dependensi
  • Lebih sulit menggabungkan kontainer tanpa membuang ruang/bandwidth
Docker Tingkat Menengah

Rekomendasi image Docker

  • Pecah kontainer hingga level terkecil yang dibutuhkan
  • Lebih mudah menggabungkan banyak kontainer nanti dibanding membangun satu image besar
  • Seperti
    • membangun dengan komponen yang dapat digunakan ulang
    • vs. membangun dari nol tiap kali
  • Pembaruan perangkat lunak spesifik hanya memengaruhi kontainer yang memakai image tersebut, bukan semua kontainer
  • Dapat dioptimalkan untuk ukuran, memudahkan penggunaan dan distribusi
Docker Tingkat Menengah

Contoh pemecahan image Docker

  • Pertimbangkan proyek data engineering dengan perangkat lunak berikut:

    • Database PostgreSQL
    • Perangkat lunak ETL Python
    • Perangkat lunak server web
  • Bisa memakai satu image, tetapi kita harus memperbarui image setiap kali ada pembaruan ETL atau server web.

  • Apa yang terjadi jika kita perlu menambah server web lain?
FROM ubuntu
RUN apt update
RUN apt install -y postgresql
RUN apt install -y nginx
RUN apt install -y python3.9
...
Docker Tingkat Menengah

Contoh dengan kontainer minimal

  • Opsi lebih baik dengan Docker
  • Pisahkan tiap komponen ke kontainernya sendiri
    • Kontainer database PostgreSQL
    • Komponen ETL Python
    • Server web
  • Dapat membangun konfigurasi optimal untuk kebutuhan kita, dan menambah/menghapus komponen sesuai kebutuhan
bash> docker run -d postgresql:latest

bash> docker run -d nginx:latest ...
Docker Tingkat Menengah

Menentukan ukuran image

  • Gunakan docker images
  • Menampilkan detail tiap image, termasuk ukuran
  • Opsi lanjutan dibahas nanti

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 Tingkat Menengah

Ayo berlatih!

Docker Tingkat Menengah

Preparing Video For Download...