Episode ini mengajarkan berbagi data antara host dan container lewat lxc.mount.entry bind-mount, opsi mount read-only, kasus berbagi direktori data dan konfigurasi, serta akses perangkat (device) dari dalam container.

Container punya filesystem sendiri (rootfs), tapi ada kalanya ia butuh data dari host: direktori project yang sedang dikembangkan, volume data bersama antar container, atau config yang dikelola dari luar. Di episode 11 kita memakai bind-mount — memasang direktori host ke dalam container — lewat lxc.mount.entry. Ini fitur yang membuat LXC terasa seperti "mesin nyata yang bisa berbagi disk".
Bind mount membuat sebuah direktori host "menempel" di lokasi lain di dalam filesystem container, tanpa menyalin data. Kedua sisi melihat file yang sama — perubahan dari satu sisi langsung terlihat di sisi lain. Bayangkan seperti hard link untuk seluruh direktori: satu data, dua pintu akses.
Kelebihannya: tidak ada duplikasi data, tidak ada sinkronisasi yang harus dijaga. Kekurangannya: kalian harus berhati-hati dengan permission dan apa yang dibagikan.
Bind mount dideklarasikan di config container:
# Format: <source> <mountpoint di container> <fstype> <options> <dump> <fsck>
lxc.mount.entry = /srv/data c1/srv/data none bind 0 0
lxc.mount.entry = /etc/ssl/certs c1/etc/ssl/certs none bind,ro 0 0Mari bedah formatnya (mirip kolom di /etc/fstab):
source — path di host (/srv/data).mountpoint — tujuan di dalam container. Format bisa c1/srv/data (relatif ke rootfs) atau ../.. untuk path rootfs.fstype — none untuk bind.options — bind untuk mount biasa, bind,ro untuk read-only.dump dan fsck — kolom 0 (diabaikan).Setelah mengedit config, restart container agar mount berlaku:
lxc-stop -n c1
lxc-start -n c1Verifikasi dari dalam container:
lxc-attach -n c1 -- mount | grep srv
lxc-attach -n c1 -- ls /srv/dataTip
Gunakan opsi bind,ro untuk segala sesuatu yang tidak boleh diubah container — misalnya config, binary, atau data referensi. Read-only mount melindungi dari kerusakan tidak sengaja maupun gangguan dari proses yang dibajak di dalam container.
Contoh paling umum: berbagi direktori data antar container, atau menyimpan data di disk host agar mudah dibackup.
lxc.mount.entry = /srv/nginx-html c1/var/www/html none bind 0 0
lxc.mount.entry = /srv/uploads c1/var/www/uploads none bind 0 0Dua container (misal web dan worker) bisa berbagi /srv/uploads yang sama — data ditulis sekali, keduanya membaca file yang sama.
Bagikan config yang dikelola dari host, atau binary/tooling agar tidak perlu diinstall di tiap container:
lxc.mount.entry = /srv/conf/nginx.conf c1/etc/nginx/nginx.conf none bind,ro 0 0Device host juga bisa di-mount ke container. Untuk akses satu perangkat (misal serial USB tertentu):
lxc.mount.entry = /dev/ttyUSB0 c1/dev/ttyUSB0 none bind,create=file 0 0Opsi create=file membuat node device tersebut di container jika belum ada. Untuk kasus passthrough device yang lebih luas (GPU/USB), kita bahas di episode 14.
Warning
Memasang device host ke container melonggarkan isolasi: proses di dalam container yang di-root dan sudah di-compromise bisa menulis ke device tersebut. Jangan pernah mem-bind-mount device tanpa memahami risikonya, dan kombinasikan dengan limitasi cgroup device (episode 14) untuk akses yang benar-benar terkontrol.
Ini pitfall klasik LXC: bind-mount mengikuti UID host, bukan UID container. File di /srv/data yang dimiliki UID 1000 (user host) akan tampak dimiliki UID 1000 di dalam container. Pada container unprivileged, UID container dipetakan — misal UID 0 container = UID 100000 host — sehingga permission yang cocok di host belum tentu cocok di container.
Solusi praktis:
setgid.Jika direktori mountpoint di dalam container belum ada, mount gagal. Buat dulu:
lxc-attach -n c1 -- mkdir -p /srv/dataJika bind mount tidak terlihat setelah restart, periksa syntax di config dan log container:
cat /var/lib/lxc/c1/log/lxc.log | tail -30Inti yang harus dibawa pulang:
lxc.mount.entry: source, mountpoint, fstype, options, dump, fsck.bind,ro mengunci direktori agar read-only — default yang aman untuk config/data referensi.Di episode 12 selanjutnya kita akan membahas container di Proxmox VE — bagaimana PVE memakai LXC sebagai mesin CT, fakta PVE 9.2 yang membawa LXC 7.0 LTS, unprivileged CT sebagai default, serta praktik Docker-in-LXC dan nested virtualization.