memahami docker image container volume | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: memahami docker image container volume

Tuesday, May 19, 2026

memahami docker image container volume

📦 ARTIKEL 3 DARI 10 — DOCKER FROM ZERO TO ZORRO

Memahami Docker Image, Container, dan Volume dalam Satu Artikel

Tiga pilar utama Docker yang wajib kamu kuasai sebelum melangkah lebih jauh — dijelaskan dengan analogi nyata, kode praktikal, dan zero basa-basi.

⏱️
Estimasi Baca
8 Menit
🎯
Level
Pemula
📅
Diperbarui
2026
#DockerImage #DockerContainer #DockerVolume #BelajarDocker #ZeroToZorro

Pernah nggak kamu ngerasa aplikasinya jalan mulus di laptop sendiri, tapi begitu dipindah ke server teman — error semua? Itulah alasan Docker lahir. Dan di jantung Docker, ada tiga konsep yang wajib kamu pahami sebelum menyentuh hal lain: Docker image, container, dan volume. Ketiganya bukan sekadar istilah teknis — mereka adalah fondasi dari cara Docker bekerja. Artikel ini adalah bagian ke-3 dari seri 10 Artikel Belajar Docker: Docker from Zero to Zorro, dan di sini kita akan kupas tuntas ketiganya dalam satu duduk, lengkap dengan analogi, kode nyata, dan langkah-langkah yang bisa langsung kamu praktikkan.

🖼️ Apa Itu Docker Image? Resep Masakan untuk Aplikasimu

Bayangkan kamu punya resep masakan rahasia. Resep itu berisi daftar bahan, urutan memasak, dan takaran yang tepat. Kamu bisa membagikan resep itu ke siapa saja, dan hasilnya akan selalu sama — baik dimasak di Jakarta, Surabaya, atau bahkan di server cloud sekalipun.

Itulah Docker image. Ia adalah template read-only (hanya bisa dibaca, tidak bisa diubah langsung) yang berisi semua yang dibutuhkan untuk menjalankan sebuah aplikasi: sistem operasi dasar, library, konfigurasi, sampai kode program. Image adalah blueprint — bukan aplikasi yang sedang berjalan, tapi instruksi lengkap untuk membuatnya.

📌 Definisi Kunci

Docker Image adalah snapshot read-only yang berisi filesystem, dependensi, environment variables, dan instruksi untuk menjalankan sebuah aplikasi. Image dibuat dari Dockerfile dan dapat dibagikan via Docker Hub atau registry lainnya.

Docker image disusun dalam layer — seperti lapisan es krim. Setiap instruksi di Dockerfile menciptakan satu layer baru. Layer ini bersifat immutable dan bisa di-cache, sehingga proses build berikutnya jadi lebih cepat karena hanya layer yang berubah yang perlu diproses ulang.

🔥
Fakta Menarik

Docker Hub memiliki lebih dari 100.000+ image publik yang bisa langsung kamu pakai. Mulai dari Ubuntu, Node.js, MySQL, sampai Nginx — semuanya gratis dan siap pakai dalam hitungan detik.

💻 Perintah Dasar Docker Image
# Menarik image dari Docker Hub
docker pull nginx

# Melihat daftar image yang sudah ada di lokal
docker images

# Menghapus image tertentu (pakai IMAGE ID dari docker images)
docker rmi nginx

# Melihat detail layer sebuah image
docker history nginx

🚢 Docker Container: Ketika Resep Jadi Hidangan Nyata

Kalau image adalah resep, maka container adalah hasil masakannya — hidangan yang nyata ada di atas meja dan bisa kamu makan. Container adalah instance yang sedang berjalan dari sebuah image. Satu resep bisa menghasilkan banyak hidangan, dan begitu pula — satu image bisa menghasilkan banyak container yang berjalan secara bersamaan dan terisolasi satu sama lain.

Inilah keajaiban Docker: setiap container berjalan dalam lingkungannya sendiri. Container A tidak tahu apa yang ada di Container B, meski keduanya berjalan di mesin yang sama. Ini disebut isolation — dan itulah yang membuat Docker begitu powerful untuk deployment.

💡
Tips Penting

Container bersifat ephemeral — artinya, data di dalamnya hilang saat container dihapus. Kalau kamu simpan file di dalam container tanpa volume, dan container itu dihapus, file tersebut ikut hilang. Inilah kenapa kita butuh Volume (yang akan dibahas berikutnya).

Cara Menjalankan Container Pertamamu — Step by Step

1
Pastikan Docker sudah berjalan

Ketik perintah berikut di terminal untuk memastikan Docker daemon aktif.

docker version
2
Jalankan container dari image Nginx

Flag -d = detached (berjalan di background), -p 8080:80 = port mapping (port 8080 di hostmu → port 80 di container).

docker run -d -p 8080:80 --name web-ku nginx
3
Buka browser dan akses localhost:8080

Kalau muncul halaman "Welcome to nginx!" — selamat! Container pertamamu berhasil berjalan. 🎉

4
Lihat container yang sedang berjalan
# Container yang aktif
docker ps

# Semua container (termasuk yang sudah stop)
docker ps -a
5
Hentikan dan hapus container
# Hentikan container
docker stop web-ku

# Hapus container (data di dalamnya HILANG!)
docker rm web-ku
Aspek 🖼️ Docker Image 🚢 Docker Container
Status Statis (read-only) Dinamis (sedang berjalan)
Analogi Resep masakan Hidangan di atas meja
Bisa ada berapa? Satu, bisa dishare Banyak dari 1 image
Perintah buat docker build docker run
Simpan data? Tidak (hanya filesystem) Ya, tapi hilang saat dihapus

💾 Docker Volume: Lemari Penyimpanan yang Tidak Ikut Hancur

Ini bagian paling krusial yang sering dilewati pemula — dan biasanya berujung pada data hilang yang bikin panik. Seperti yang sudah kita tahu, container bersifat ephemeral. Kalau container dihapus, semua data di dalamnya ikut lenyap.

Bayangkan kamu tinggal di apartemen kontrakan. Semua furnitur di dalam apartemen itu adalah milik penyewa — kalau kamu pindah, furniturnya ikut kamu. Tapi ada lemari bawaan apartemen yang tetap di sana meski kamu sudah pergi. Itulah Docker Volume — penyimpanan yang hidupnya terpisah dari container, tapi bisa dipasang ke container manapun yang membutuhkannya.

📌 Definisi Kunci

Docker Volume adalah mekanisme penyimpanan persisten yang dikelola oleh Docker dan hidup di luar siklus hidup container. Data tetap ada meski container dihapus, dan bisa di-mount ke banyak container sekaligus.

⚠️
Perhatian!

Jangan pernah simpan data penting seperti database MySQL atau file upload di dalam container tanpa volume. Sekali docker rm dijalankan — data kamu hilang selamanya, dan tidak ada recycle bin di sini.

💻 Perintah Docker Volume yang Wajib Kamu Tahu
# Membuat volume baru
docker volume create data-laravel

# Melihat semua volume
docker volume ls

# Melihat detail volume (lokasi di filesystem)
docker volume inspect data-laravel

# Menjalankan container dengan volume di-mount
# Format: -v nama-volume:path-di-container
docker run -d \
  -p 8080:80 \
  -v data-laravel:/var/www/html \
  --name app-laravel \
  nginx

# Menghapus volume (hati-hati! data hilang)
docker volume rm data-laravel

# Menghapus semua volume yang tidak terpakai
docker volume prune
Insight Penting

Ada dua cara mount storage di Docker: Named Volume (dikelola Docker, lebih portable) dan Bind Mount (mount langsung dari folder di host, cocok untuk development). Untuk production, selalu gunakan Named Volume. Untuk development lokal, Bind Mount lebih praktis karena file langsung tersinkron dengan editor kamu.

🔍 Analisis: Named Volume vs Bind Mount — Kapan Pakai Yang Mana?

📦 Named Volume
  • Dikelola sepenuhnya oleh Docker
  • Portable antar environment
  • Ideal untuk database (MySQL, PostgreSQL, Redis)
  • Lebih aman untuk production
  • -v nama-volume:/path
📂 Bind Mount
  • Mount langsung dari folder di host
  • File di host langsung terlihat di container
  • Ideal untuk development aktif
  • Bergantung pada struktur folder host
  • -v /path/host:/path/container

🛠️ Praktik Nyata: Gabungkan Image, Container, dan Volume untuk Laravel

Oke, sekarang kita gabungkan ketiga konsep Docker image, container, dan volume dalam satu skenario nyata. Bayangkan kamu ingin menjalankan aplikasi Laravel dengan MySQL sebagai database — dan kamu ingin data MySQL-nya persisten meski container dimatikan.

💻 Menjalankan Laravel + MySQL dengan Volume Persisten
# Langkah 1: Buat volume untuk data MySQL
docker volume create mysql-data

# Langkah 2: Jalankan container MySQL dengan volume
docker run -d \
  --name db-mysql \
  -e MYSQL_ROOT_PASSWORD=rahasiabanget \
  -e MYSQL_DATABASE=laravel_app \
  -v mysql-data:/var/lib/mysql \
  -p 3306:3306 \
  mysql:8.0

# Langkah 3: Jalankan container Laravel
# (dengan bind mount untuk sync kode saat development)
docker run -d \
  --name app-laravel \
  --link db-mysql:mysql \
  -v $(pwd):/var/www/html \
  -p 8000:8000 \
  php:8.2-apache

# Langkah 4: Cek semua container berjalan
docker ps

# Langkah 5: Test — stop dan hapus container MySQL
# kemudian jalankan lagi — data TETAP ADA karena ada volume!
docker stop db-mysql
docker rm db-mysql
docker run -d --name db-mysql \
  -e MYSQL_ROOT_PASSWORD=rahasiabanget \
  -v mysql-data:/var/lib/mysql \
  -p 3306:3306 mysql:8.0
💡
Tips Pro

Dalam project nyata, kamu akan menggunakan Docker Compose untuk mendefinisikan semua container, volume, dan network dalam satu file docker-compose.yml. Kita akan bahas ini di artikel-artikel berikutnya dalam seri ini. Tapi memahami perintah manual seperti di atas adalah fondasi yang wajib dimiliki!

🎯 Kesimpulan: Tiga Pilar yang Bikin Docker Masuk Akal

Setelah membaca artikel ini, kamu sudah memahami tiga konsep krusial yang menjadi jantung dari cara Docker bekerja. Berikut rangkuman singkatnya:

  • Docker Image — template read-only berisi semua yang dibutuhkan aplikasi untuk berjalan. Ibarat resep masakan yang bisa dishare ke siapa saja.
  • Docker Container — instance hidup dari sebuah image. Bisa banyak, terisolasi, tapi datanya hilang kalau container dihapus tanpa volume.
  • Docker Volume — penyimpanan persisten di luar siklus hidup container. Solusi wajib untuk database dan file penting.

Memahami relasi antara Docker image, container, dan volume adalah kunci untuk tidak lagi takut kehilangan data atau bingung kenapa aplikasimu berulah di production. Langkah selanjutnya? Kamu akan belajar cara membuat image sendiri dari nol menggunakan Dockerfile — simak di artikel berikutnya!

🚀 Lihat Semua Artikel Seri Kalau artikel ini berguna, tinggalkan komentar dan share ke teman-teman yang lagi belajar Docker! 🙌
🏷️ Tags Artikel
#DockerImageContainerVolume #DockerImage #DockerContainer #DockerVolume #BelajarDocker #ZeroToZorro #Docker #DockerPemula #DevOps
📚
Kamu sedang membaca bagian dari

Seri Belajar Docker: Docker from Zero to Zorro

📋 Lihat Daftar Isi Lengkap Seri Ini
10 Artikel Belajar Docker — dari instalasi sampai deploy production

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux