Volume dan bind mount sama-sama menitipkan data ke disk host — dan justru itu masalah bagi satu kelas data terakhir. Cache yang boleh dingin kapan pun tidak pantas menghabiskan siklus tulis disk; kredensial yang dibaca sekali saat aplikasi menyala sebaiknya tidak pernah meninggalkan jejak berkas di media penyimpanan. Untuk kelas itu, Docker menyediakan jenis mount ketiga: tmpfs, yang menyimpan isi mount di memori host alih-alih disk. Chapter ini membedah bentuk penulisannya, membuktikan sifat fana isinya lewat demonstrasi, lalu memetakan use case yang tepat — serta batas tegasnya: tmpfs bukan alat persistensi.
Mount yang Tinggal di Memori #
Mekanisme tmpfs meminjam fasilitas kernel Linux bernama sama: filesystem sementara yang halaman-halamannya tinggal di RAM dan swap. Docker memasang filesystem itu ke sebuah path di dalam container, sehingga setiap tulisan ke path tersebut menjadi tulisan ke memori — tidak ada berkas yang jatuh ke writable layer, tidak ada yang mendarat di area volume, dan tidak ada yang tersimpan di path host mana pun. Isinya lahir bersama container dan berakhir begitu container berhenti.
Jenis mount ini satu-satunya dari ketiganya yang tidak punya src: tidak ada sumber di disk untuk dirujuk, karena isi mount memang akan tercipta dari nol di memori. Karena itu bentuk penulisan yang kita pakai adalah --mount type=tmpfs dengan tujuan dan opsi ukuran. Bentuk paling ringkasnya hanya butuh tujuan:
$ docker run --rm --mount type=tmpfs,destination=/app/cache alpine:3.20 sh -c 'echo halo > /app/cache/tes.txt && cat /app/cache/tes.txt'Output yang Dihasilkan:
haloTulisan dan bacaan berjalan normal persis seperti filesystem biasa — proses di container tidak pernah tahu bahwa berkasnya tinggal di memori. Opsi-opsi tmpfs yang paling sering dipakai dirangkum tabel berikut:
| Opsi | Arti | Nilai bawaan |
|---|---|---|
destination (alias dst, target) | Path mount di dalam container | Wajib diisi |
tmpfs-size | Batas ukuran tmpfs, dalam byte atau satuan seperti 16m | Tanpa batas eksplisit — kernel yang menentukan sendiri plafonnya |
tmpfs-mode | Permission direktori tmpfs dalam oktal, misalnya 700 atau 1777 | 1777 |
Angka 1777 mungkin terlihat asing bagi yang pertama kali membuang mata ke permission oktal: tiga digit 777 berarti pemilik, grup, dan pengguna lain boleh membaca-menulis-menjalankan, sementara angka 1 di depannya adalah sticky bit — perlindungan agar pengguna hanya bisa menghapus berkas miliknya sendiri. Pola ini persis permission /tmp di sistem Linux mana pun, dan memang itulah peran khas tmpfs.
Demonstrasi: Isi yang Lenyap Saat Container Berganti #
Sifat fana tmpfs paling meyakinkan dipelajari lewat percobaan dua babak. Babak pertama: container hitung menyala dengan tmpfs berukuran 16 MB di /app/cache, lalu kita tinggalkan jejak:
$ docker run -d --name hitung --mount type=tmpfs,destination=/app/cache,tmpfs-size=16m alpine:3.20 sleep 300
$ docker exec hitung sh -c 'echo sesi-1 > /app/cache/jejak.txt'
$ docker exec hitung ls /app/cache
$ docker exec hitung df -h /app/cacheOutput yang Dihasilkan:
7e027cdfaa14f5e2aca5e887005912e342c7a2bd1f2742acb81fd765f42af7a7
jejak.txt
Filesystem Size Used Avail Use% Mounted on
tmpfs 16.0M 0 16.0M 0% /app/cacheJejak berhasil tertulis, dan df membocorkan jenis filesystem-nya. Babak kedua: container dibuang dan digantikan container baru dengan mount yang persis sama:
$ docker rm -f hitung
$ docker run -d --name hitung --mount type=tmpfs,destination=/app/cache,tmpfs-size=16m alpine:3.20 sleep 300
$ docker exec hitung ls -la /app/cacheOutput yang Dihasilkan:
hitung
8253d247d4cdc29f042d04b4405661a6d69e3e44baf632481b165344cca9789a
total 0
drwxrwxrwt 2 root root 40 Oct 13 15:04 .
drwxr-xr-x 3 root root 4096 Oct 13 15:04 ..Mari kita telaah kedua babak tersebut:
jejak.txtlenyap tanpa jejak — direktori/app/cachepada container kedua kosong melompong: hanya.dan.., dengantotal 0sebagai kwitansinya; berkas pertama tidak pindah ke disk mana pun karena memang tidak pernah tersimpan di disk.dfmengonfirmasi rumahnya di memori — kolomFilesystembernilaitmpfsdengan ukuran16.0M, persis angkatmpfs-size=16myang kita tulis; mount ini tidak mengambil ruang dari writable layer maupun dari path host.- Permission direktori membuktikan nilai bawaan —
drwxrwxrwtpada baris.adalah wujud oktal1777: terbuka bagi semua pengguna di dalam container, dilindungi sticky bitt. - Bukan hanya
docker rm— isi tmpfs berakhir saat container berhenti;docker stopsaja sudah cukup mengosongkannya, sehingga container yang dijalankan ulang selalu mulai dari mount yang bersih.
Use Case: Cache, Secret Sementara, dan IPC #
Sifat “hidup di memori, mati saat berhenti” menempatkan tmpfs pada tiga peran yang tepat. Peran pertama adalah cache: hasil kompilasi per sesi, session store aplikasi web, atau data sementara pemrosesan — semuanya boleh dibangun ulang dari nol, jadi menaruhnya di memori menghemat siklus tulis disk dan memberi kecepatan baca-tulis setara RAM.
Peran kedua adalah secret sementara: berkas kredensial ditulis ke mount tmpfs saat container menyala, dibaca aplikasi sekali di awal, lalu tidak pernah meninggalkan jejak berkas di media penyimpanan manapun. Catatan presisi untuk kebutuhan yang keras: halaman memori tmpfs tetap dapat tergeser ke ruang swap bila host memakai swap dan kehabisan memori, sehingga lingkungan yang sangat ketat mematikan swap di hostnya. Pola penyaluran secret yang lebih terstruktur — dideklarasikan dan dikelola sebagai objek tersendiri — kita bahas pada Chapter Config dan Secret di Section Docker Compose.
Peran ketiga adalah IPC dan shared memory: dua proses di dalam container yang berbagi memori untuk koordinasi cepat bisa memakai tmpfs sebagai perantara, dengan ukuran yang dikendalikan lewat tmpfs-size agar tidak melahap memori host. Pola lain yang kerap menyertai tmpfs adalah kombinasi dengan container read-only — seluruh filesystem container dikunci hanya-baca dan hanya direktori tertentu yang diberi tmpfs sebagai satu-satunya tempat tulis; kombinasi ini kita rakit pada Chapter Mount Read-Only.
Peta Akhir Tiga Jenis Mount #
Tiga jenis mount kini lengkap kita kenal, dan tabel berikut menjadi ringkasan finalnya — kalimat yang sama yang akan kita pakai berulang kali saat merancang penyimpanan sebuah service:
| Jenis mount | Lokasi data | Umur data | Use case khas |
|---|---|---|---|
| Volume | Area Docker di disk host, /var/lib/docker/volumes | Selamat dari docker rm | Database, data aplikasi |
| Bind mount | Path host apa pun yang kita tunjuk | Mengikuti umur berkas di host | Konfigurasi, source code development |
| tmpfs mount | Memori host | Berakhir saat container berhenti | Cache, secret sementara |
Sebelum menutup, kita bersihkan arena: docker rm -f hitung menghapus container latihan — isinya memang sudah lenyap sejak awal, jadi tidak ada yang perlu diselamatkan. Volume menempatkan data di bawah asuhan Docker, bind mount membuka jendela dua arah ke host, dan tmpfs menjaga data tetap di memori dengan umur seumur container. Tiga sifat yang saling melengkapi, tetapi juga menuntut keputusan: pada service nyata, mana yang dipakai untuk jalur mana? Kerangka memilih yang kita pasang di Chapter Konsep Persistence akan diuji dengan skenario demi skenario pada Chapter Memilih Jenis Mount — termasuk kasus yang memakai ketiga jenis mount sekaligus dalam satu deployment.
Referensi #
- tmpfs Mounts
— opsi
tmpfs-sizedantmpfs-modebeserta batasan platform Linux. - docker run — CLI Reference
— definisi bentuk
--mount type=tmpfsdan alias-aliasnya. - Docker Storage — posisi tmpfs di antara tiga jenis mount pada arsitektur penyimpanan Docker.