0Pricing
Docker & DevOps Fundamentals · Pelajaran

Meminimalkan Ukuran Image dengan Basis Slim dan Distroless

Perkecil image akhir dengan memilih image dasar minimal, menghapus alat build, dan menggunakan basis distroless atau scratch agar pengunduhan lebih cepat serta permukaan serangan lebih kecil.

Meminimalkan Ukuran Image dengan Basis Slim dan Distroless adalah pelajaran Docker & DevOps Fundamentals gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Docker & DevOps Fundamentals, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Docker & DevOps Fundamentals mencakup 4 pelajaran total.

Mengapa Ukuran Image Penting

Image yang lebih kecil diunduh lebih cepat, dimulai lebih cepat, biaya penyimpanannya lebih rendah, dan mengekspos lebih sedikit paket kepada penyerang. Mengoptimalkan ukuran meningkatkan kinerja sekaligus keamanan.

Memilih Basis yang Ringan

Image bawaan memang praktis, tetapi berukuran besar. Mengganti node:20 (sekitar 1 GB) dengan node:20-slim atau node:20-alpine dapat menghemat ratusan megabita seketika.

FROM node:20-slim

Kompromi Alpine

Alpine berukuran sangat kecil, tetapi menggunakan musl libc, bukan glibc, sehingga terkadang menyebabkan biner asli tidak berfungsi. Lakukan pengujian dengan cermat; terkadang -slim merupakan pilihan kecil yang lebih aman.

FROM python:3.12-alpine

Gabungkan Lapisan RUN

Setiap RUN menambahkan satu lapisan. Rangkaikan perintah yang berkaitan dan lakukan pembersihan pada lapisan yang sama; jika tidak, berkas yang dihapus tetap memperbesar lapisan sebelumnya.

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

Gunakan .dockerignore

Berkas .dockerignore mencegah hal-hal yang tidak diperlukan masuk ke konteks pembangunan: node_modules, .git, dan log. Konteks yang lebih kecil berarti pembangunan lebih cepat dan lapisan yang lebih kecil.

# .dockerignore
.git
node_modules
*.log

Ringkasan Pembangunan Multitahap

Lakukan pembangunan dalam satu tahap dengan semua kompiler, lalu gunakan COPY --from hanya untuk menyalin artefak ke tahap akhir yang bersih. Rantai alat tidak ikut dikirimkan.

FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app

FROM alpine:3.20
COPY --from=build /src/app /app

Mengenal Distroless

Image Distroless hanya berisi aplikasi dan waktu prosesnya—tanpa shell, pengelola paket, atau biner tambahan. Ukurannya kecil dan sulit dieksploitasi.

FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Tanpa Shell, Bukan Masalah

Distroless tidak memiliki shell, jadi perintah RUN dan docker exec sh tidak akan berfungsi. Lakukan semua penyiapan pada tahap-tahap sebelumnya; gunakan tag :debug jika Anda perlu memeriksa bagian dalamnya.

Basis scratch

Untuk biner yang sepenuhnya statis (Go, Rust), FROM scratch hanya mengirimkan berkas yang dapat dieksekusi—sering kali dengan total ukuran beberapa megabita.

FROM scratch
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Mengukur Hasil Optimasi

Gunakan docker images untuk membandingkan ukuran dan docker history untuk melihat lapisan mana yang paling besar. Optimalkan lapisan terbesar terlebih dahulu.

docker history myapp:latest

Tetapkan Versi, Bukan latest

Menetapkan tag atau intisari tertentu membuat pembangunan dapat direproduksi dan mencegah lonjakan ukuran yang tidak terduga ketika latest dari sumber hulu berubah.

FROM node:20.11.1-slim

Pemeriksaan Singkat

Apa yang istimewa dari image distroless?

Ringkasan

Sekarang Anda dapat mengecilkan image secara agresif:

  • Pilih basis -slim, -alpine, distroless, atau scratch
  • Rangkaikan dan bersihkan lapisan RUN; gunakan .dockerignore
  • Pembangunan multitahap membuang rantai alat
  • Ukur menggunakan docker history dan tetapkan versi

Image yang lebih kecil berarti penerapan yang lebih cepat dan aman.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Meminimalkan Ukuran Image dengan Basis Slim dan Distroless” gratis?

Ya — teks lengkap “Meminimalkan Ukuran Image dengan Basis Slim dan Distroless” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Docker & DevOps Fundamentals, upgrade ke CoddyKit PRO. Kursus Docker & DevOps Fundamentals mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Meminimalkan Ukuran Image dengan Basis Slim dan Distroless”?

Perkecil image akhir dengan memilih image dasar minimal, menghapus alat build, dan menggunakan basis distroless atau scratch agar pengunduhan lebih cepat serta permukaan serangan lebih kecil. Kamu berlatih Docker & DevOps Fundamentals dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Docker & DevOps Fundamentals?

Tidak diperlukan pengalaman sebelumnya. Docker & DevOps Fundamentals di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Meminimalkan Ukuran Image dengan Basis Slim dan Distroless” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Docker & DevOps Fundamentals ini?

Ya. Setiap pelajaran Docker & DevOps Fundamentals menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Build Multi-Tahap untuk Efisiensi
  2. Memanfaatkan Caching Build
  3. Praktik Terbaik Keamanan Dockerfile
  4. Meminimalkan Ukuran Image dengan Basis Slim dan Distroless
← Kembali ke Docker & DevOps Fundamentals