15 Tips Terbaik Mengoptimalkan Image Docker

Posted 19-07-2024 09:34  » Team Tobatimes
Foto Caption: Docker Image

Mengoptimalkan image Docker dapat meningkatkan efisiensi dan kinerja aplikasi yang dikontainerkan. Berikut adalah beberapa tips dan praktik terbaik untuk mengoptimalkan image Docker:

1. Gunakan Base Image yang Minimalis

  • Alpine Linux: Pertimbangkan menggunakan base image minimalis seperti Alpine Linux, yang merupakan distribusi Linux yang ringan dan berorientasi pada keamanan.

    FROM alpine:latest

2. Multi-Stage Builds

  • Mengurangi Ukuran Image: Gunakan multi-stage builds untuk menjaga ukuran image akhir tetap kecil dengan memisahkan lingkungan build dari lingkungan runtime.

    FROM golang:1.16 AS builder WORKDIR /app COPY . . RUN go build -o main . FROM alpine:latest WORKDIR /app COPY --from=builder /app/main . CMD ["./main"]

3. Hanya Salin File yang Diperlukan

  • Menyalin Selektif: Gunakan .dockerignore untuk mengecualikan file dan direktori yang tidak diperlukan dalam image.

    COPY src /app/src COPY config /app/config

4. Minimalkan Layers

  • Gabungkan RUN Instructions: Minimalkan jumlah layers dengan menggabungkan RUN instructions.

    RUN apt-get update && apt-get install -y curl vim && rm -rf /var/lib/apt/lists/*

5. Optimalkan RUN Instructions

  • Hapus Cache dan File yang Tidak Diperlukan: Bersihkan file sementara dan cache manajer paket.

    RUN apt-get update && apt-get install -y curl && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

6. Gunakan Images Resmi dan Terverifikasi

  • Keamanan dan Pembaruan: Dasarkan image Anda pada image resmi dan terverifikasi dari Docker Hub atau registry terpercaya lainnya untuk memastikan mereka terawat dengan baik dan aman.

7. Gunakan Tag Spesifik

  • Hindari Latest: Gunakan tag spesifik untuk base images daripada latest untuk memastikan konsistensi dan menghindari perubahan yang tidak terduga.

    FROM node:14.17.0

8. Kurangi Jumlah Layers

  • Instruksi Minimal: Setiap perintah dalam Dockerfile menciptakan layer baru. Kurangi jumlah layer dengan menggabungkan perintah jika memungkinkan.

    RUN apt-get update && apt-get install -y package1 package2 && rm -rf /var/lib/apt/lists/*

9. Cache Dependencies

  • Optimalkan Cache: Cache dependencies di awal Dockerfile untuk memanfaatkan caching layer Docker.

    COPY package.json /app RUN npm install COPY . /app

10. Gunakan File .dockerignore

  • Abaikan File yang Tidak Diperlukan: Buat file .dockerignore untuk mengecualikan file dan direktori yang tidak diperlukan dari konteks build image.

    node_modules npm-debug.log

11. Minimalkan Layers Image

  • Gabungkan Layers: Gabungkan beberapa pernyataan RUN menjadi satu pernyataan untuk mengurangi jumlah layer total.

    RUN apt-get update && apt-get install -y python3 python3-pip && rm -rf /var/lib/apt/lists/*

12. Jaga Container Tetap Stateless dan Immutable

  • Data Sementara: Hindari menyimpan data persisten di dalam container. Gunakan volume dan penyimpanan eksternal untuk data yang perlu dipertahankan.

13. Optimalkan Kode Aplikasi

  • Dependencies: Hapus dependencies yang tidak diperlukan dan gunakan library yang dioptimalkan dalam kode aplikasi Anda.

14. Praktik Keamanan Terbaik

  • Jalankan sebagai Non-Root: Hindari menjalankan container sebagai pengguna root demi alasan keamanan.

    USER appuser

15. Gunakan Multi-Stage Builds untuk Pengujian dan Produksi

  • Tahapan Terpisah: Buat tahapan terpisah untuk membangun, menguji, dan produksi untuk memastikan bahwa image akhir bersih dan sekecil mungkin.

Dengan menerapkan strategi ini, Anda dapat secara signifikan mengurangi ukuran dan meningkatkan kinerja serta keamanan image Docker Anda.