Belajar Podman - Volumes & Mounts
Episode 7 of 23

Belajar Podman - Volumes & Mounts

Menyimpan data yang bertahan di luar siklus hidup container: named volume dengan podman volume create, bind mount lewat --mount type=bind, tmpfs untuk data sementara, perbandingan anonim, named, dan bind mount, volume drivers, serta fitur podman volume rename dari Podman 6.1.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Di episode 6 kalian mengelompokkan container ke dalam pods dan membuatnya berbagi network namespace. Tapi ada satu hal yang belum dibahas: data. Container bersifat sementara — begitu dihapus, sistem filenya ikut hilang. Episode 7 ini membahas cara menyimpan dan membagikan data dengan volumes dan mounts: named volume, bind mount, tmpfs, volume drivers, dan fitur rename volume yang hadir di Podman 6.1.

Mengapa Volume Diperlukan

Container dirancang sebagai entitas sekali pakai. Ketika podman rm dijalankan, seluruh lapisan filesystem container turut terhapus. Masalah muncul saat data harus bertahan lebih lama dari container itu sendiri:

  • Database yang datanya tidak boleh hilang saat container di-restart.
  • Log aplikasi yang harus diarsipkan meski container lama sudah diganti.
  • File konfigurasi yang ingin kalian ubah tanpa masuk ke dalam container.

Volume menjawab semua ini dengan memisahkan data dari siklus hidup container. Data ditaruh di lokasi yang dikelola Podman, lalu di-mount ke dalam filesystem container.

Jenis Penyimpanan di Podman

Ada empat cara menghadirkan data ke container, masing-masing dengan karakteristik berbeda:

TipePenciptaanSiklus hidupKasus penggunaan
Anonymous volumeOtomatis saat -v /data tanpa namaMenempel pada containerPenyimpanan sementara
Named volumepodman volume createIndependen dari containerData yang harus bertahan
Bind mountMenunjuk path hostIkut path hostKonfigurasi dan data host
tmpfsIn-memory, dipakai saat runHilang saat container berhentiCache dan data rahasia

Perbedaan terpenting ada di siklus hidup. Named volume diciptakan eksplisit dan hidup lebih lama dari container; anonymous volume diciptakan diam-diam dan biasanya terbuang saat container dihapus; bind mount memakai file host secara langsung; tmpfs sama sekali tidak menyentuh disk.

Named Volume: podman volume create

Named volume adalah cara paling direkomendasikan untuk data persisten. Volume dikelola Podman sendiri, lokasi penyimpanannya diatur engine, dan kalian hanya berinteraksi lewat namanya:

Membuat dan memasang named volume
podman volume create mydbdata
podman run -d --name db --volume mydbdata:/var/lib/mysql mariadb:latest
podman volume ls

podman volume create mydbdata membuat volume bernama mydbdata, dan --volume mydbdata:/var/lib/mysql memasangnya ke direktori data MariaDB di dalam container. podman volume ls menampilkan daftar volume beserta drivernya.

Perintah pengelolaan volume yang sering dipakai:

PerintahFungsi
podman volume createMembuat volume baru
podman volume lsMenampilkan daftar volume
podman volume inspectMenampilkan detail lokasi dan driver volume
podman volume rmMenghapus volume
podman volume pruneMenghapus semua volume yang tidak dipakai
Memeriksa dan membersihkan volume
podman volume inspect mydbdata
podman volume prune

podman volume inspect mydbdata menampilkan informasi seperti driver dan mountpoint di host. podman volume prune membersihkan volume yang tidak lagi dipakai container mana pun — jalankan dengan hati-hati karena data di dalamnya ikut hilang.

Bind Mount: Memakai File Host Langsung

Bind mount menaruh direktori atau file dari host langsung ke dalam container. Data tidak dikelola Podman; container membaca dan menulis ke path host apa adanya. Cocok untuk menaruh file konfigurasi, kode sumber saat development, atau direktori log yang ingin diakses langsung:

Bind mount direktori host
podman run -d --name web \
    --mount type=bind,src=/home/budi/app,dst=/usr/share/nginx/html \
    nginx:latest

Sintaks --mount memakai pasangan key=value: type=bind menandakan bind mount, src menunjuk path sumber di host, dan dst menunjuk tujuan di dalam container. Bentuk pendeknya adalah flag -v, yang sudah tidak asing bagi pengguna Docker: -v /home/budi/app:/usr/share/nginx/html. Bentuk panjang --mount lebih eksplisit dan disarankan untuk skrip.

Perbedaan Sintaks -v dan --mount

Aspek-v / --volume--mount
Bentuksrc:dst:opsi ringkaskey=value eksplisit
KeterbacaanSingkat, rentan salah bacaJelas, mudah di-debug
Fitur tambahanOpsi :ro, :Ztype, readonly, bind-propagation
RekomendasiKepatuhan DockerSkrip dan production

podman run -v /data:/data dan --mount type=bind,src=/data,dst=/data pada dasarnya melakukan hal yang sama; bedanya pada kelengkapan kontrol. --mount juga menjadi cara untuk memakai jenis mount lain, termasuk tmpfs.

tmpfs: Data di Memori

Untuk data yang benar-benar sementara — cache, file lock, atau secret dalam sesi singkat — tmpfs menyimpan semuanya di RAM, tidak pernah menyentuh disk, dan hilang otomatis saat container berhenti:

Memasang tmpfs di dalam container
podman run -d --name cache --mount type=tmpfs,dst=/cache redis:latest

--mount type=tmpfs,dst=/cache membuat filesystem sementara di /cache yang hanya hidup selama container berjalan. Tidak ada data yang tersisa di disk, menjadikannya pilihan tepat untuk cache Redis atau direktori kerja sementara. Perlu diingat bahwa tmpfs memakai memori container — ukuran harus disesuaikan dengan RAM yang tersedia.

Volume Drivers

Volume di Podman diciptakan lewat sebuah driver, mirip cara storage backend bekerja. Driver default bernama local, yang menyimpan data di mountpoint lokal host:

Menentukan driver saat membuat volume
podman volume create --driver local backup-vol
podman volume inspect backup-vol

Driver local cukup untuk hampir semua kebutuhan harian. Ekosistem kontainer menyediakan driver tambahan untuk sinkronisasi ke remote atau cloud, dan volume yang memakai driver khusus tetap diperlakukan sama dari sisi CLI — kalian tidak perlu mengubah cara memakai --volume.

Important

Dengan driver local, mountpoint volume ada di dalam direktori storage Podman — bukan di sembarang path. Jangan menghapus direktori storage dengan podman system reset sebelum memastikan volume yang berisi data penting sudah di-backup atau di-export.

Rename Volume: Fitur Baru Podman 6.1

Sejak Podman 6.1, volume bisa di-rename setelah dibuat. Sebelumnya kalian harus membuat volume baru dan menyalin data secara manual — proses yang rawan kesalahan. Sekarang cukup satu perintah:

Mengubah nama volume
podman volume rename mydbdata dbdata-prod
podman volume ls

podman volume rename mydbdata dbdata-prod mengubah nama volume beserta seluruh isinya tanpa memindahkan data. Ini sangat membantu saat penamaan standar baru diterapkan di tim — misalnya menambahkan suffix lingkungan — tanpa perlu melakukan migrasi data manual.

Membagikan Volume Antar Container

Volume juga menjadi jembatan data antar container. Dua container yang memasang volume yang sama akan melihat isi yang sama, baik keduanya berada dalam satu pod maupun container mandiri:

Dua container memakai volume yang sama
podman run -d --name writer --volume shared:/data alpine sleep 3600
podman run -d --name reader --volume shared:/data alpine sleep 3600

Baik writer maupun reader menulis ke shared:/data — perubahan dari satu container langsung terlihat oleh yang lain. Pola ini dipakai untuk pipeline yang memproses file di satu container lalu dikonsumsi container lain, atau untuk aplikasi yang harus membaca log dari proses berdekatan.

Penutup

Episode 7 membahas cara data disimpan dan dibagikan: perbedaan anonymous volume, named volume, bind mount, dan tmpfs; pembuatan named volume dengan podman volume create; bind mount lewat --mount type=bind dan bentuk pendek -v; tmpfs untuk data sementara di memori; volume drivers; fitur podman volume rename dari 6.1; serta pola berbagi volume antar container.

Inti yang harus dibawa pulang:

  • Named volume adalah pilihan default untuk data persisten — siklus hidupnya independen dari container.
  • Bind mount untuk data yang hidup di host — file konfigurasi dan kode sumber.
  • tmpfs untuk data sementara — cepat dan tidak menyentuh disk.
  • podman volume prune dan podman system reset adalah dua perintah yang bisa menghapus data — gunakan dengan kewaspadaan.

Di episode 8 berikutnya, kalian akan menghubungkan container dan pod satu sama lain lewat networking: stack netavark dan aardvark-dns, DNS per-container, port mapping, sampai perbandingan tipe jaringan bridge, macvlan, ipvlan, dan host.

Belajar Podman - Volumes & Mounts | Belajar Podman