Docker Network dan Volume: Mengelola Koneksi Antar Container dan Persistent Storage
Mengapa Container Default Kehilangan Data dan Isolasi Jaringan
Container pada dasarnya bersifat ephemeral. Filesystem yang ada di dalam container hanya bertahan selama container tersebut berjalan. Data yang tertulis ke dalam container akan hilang sepenuhnya ketika container dihapus atau direstart. Karakteristik ini menjadi masalah serius ketika kita menjalankan aplikasi yang membutuhkan penyimpanan data secara berkelanjutan, seperti database atau file storage.
Selain isu data, Docker juga menerapkan isolasi jaringan secara default melalui bridge network. Setiap container yang dijalankan tanpa konfigurasi jaringan eksplisit akan mendapatkan interface network yang terpisah dari container lain. Konsekuensinya, satu container tidak dapat berkomunikasi dengan container lain menggunakan nama container sebagai hostname. Keterbatasan ini menjadi hambatan besar saat kita membangun aplikasi multi-service. Sebuah web server membutuhkan akses ke database, dan database tersebut mungkin juga bergantung pada cache. Tanpa mekanisme koneksi antar container, setiap service berjalan dalam silo yang terisolasi.
Karena itu, kita memerlukan dua mekanisme utama. Pertama, solusi untuk menyimpan data di luar lifecycle container. Kedua, cara untuk mengatur komunikasi antar container secara eksplisit agar service-service tersebut dapat saling berinteraksi.
Memahami Jenis-Jenis Docker Network dan Kapan Menggunakannya
Docker menyediakan beberapa jenis network yang masing-masing dirancang untuk kebutuhan spesifik. bridge network merupakan default untuk single host. Network ini membuat subnet terisolasi dengan NAT ke host, sehingga container dapat mengakses jaringan luar namun tetap terlindungi dari akses langsung dari luar.
Custom bridge network memberikan kemampuan tambahan yang signifikan. Ketika container dijalankan dalam custom bridge network, Docker menyediakan DNS resolution otomatis berdasarkan nama container. Fitur ini memungkinkan container untuk saling berkomunikasi menggunakan nama sebagai hostname, yang sangat memudahkan konfigurasi service.
host network menghilangkan isolasi jaringan container sepenuhnya. Container yang menggunakan mode ini berbagi stack network dengan host. Mode ini berguna untuk aplikasi yang membutuhkan performa jaringan tinggi atau protokol khusus, namun keamanan container menjadi berkurang karena tidak ada isolasi.
overlay network memungkinkan komunikasi antar container yang berjalan di berbagai host dalam cluster Docker Swarm. Network ini menjadi fondasi utama untuk arsitektur distributed container.

Gambar: Container Network Model yang menunjukkan hubungan antara sandbox, endpoint, dan network — Sumber: [SYMPLIFY LEARNING](https://symplifylearning.com/2025/11/24/docker-networking/)
Pemilihan jenis network bergantung pada skala dan kebutuhan keamanan aplikasi. Untuk development dan single host, custom bridge adalah pilihan yang paling umum. Untuk production multi-host, overlay menjadi kebutuhan.
docker network create --driver bridge app-network
docker network inspect app-network
docker run -d --name web --network app-network nginx:latest
docker run -d --name api --network app-network node:18
docker exec web ping -c 3 apiPerintah di atas membuat custom bridge network, menjalankan dua container di dalamnya, dan memverifikasi konektivitas menggunakan ping. Container web dapat langsung mengenali container api melalui nama tanpa perlu mengetahui IP address dinamis.
Mengelola Persistent Storage dengan Docker Volume dan Bind Mount
Docker menawarkan tiga mekanisme utama untuk persistent storage: docker volume, bind mount, dan tmpfs mount. Masing-masing memiliki karakteristik dan use case yang berbeda.
Deep Learning Bootcamp
A beginner-friendly, highly interactive bootcamp designed to take you from found...
docker volume dikelola sepenuhnya oleh Docker daemon. Data disimpan di /var/lib/docker/volumes dan tidak bergantung pada struktur direktori host. Mekanisme ini lebih portable karena path tidak terikat pada lokasi spesifik di host. Volume juga lebih aman karena aksesnya terisolasi melalui Docker.
bind mount menghubungkan direktori atau file di host langsung ke container. Mekanisme ini cocok untuk development karena memungkinkan perubahan kode di host langsung terlihat di container. Namun, bind mount rentan terhadap perbedaan path antar environment dan dapat menimbulkan masalah permission.
tmpfs mount menyimpan data sepenuhnya di memory host. Data ini tidak ditulis ke disk, sehingga performa baca-tulis sangat tinggi. Namun, data akan hilang sepenuhnya saat container berhenti. Mekanisme ini cocok untuk data sementara yang sensitif.

Gambar: Perbandingan tiga jenis Docker storage mount — Sumber: [Digital Varys](https://digitalvarys.com/docker-volume-vs-bind-mounts-vs-tmpfs-mount/)
Untuk kebutuhan production, docker volume adalah pilihan utama. Volume drivers bahkan memungkinkan integrasi dengan penyimpanan remote seperti NFS, Amazon EFS, atau Azure File Storage. Dengan demikian, data dapat dipindahkan antar host tanpa kehilangan informasi.
docker volume create db-data
docker run -d \
--name postgres \
-v db-data:/var/lib/postgresql/data \
postgres:15
docker exec postgres sh -c "echo 'test data' > /var/lib/postgresql/data/test.txt"
docker rm -f postgres
docker run -d \
--name postgres-new \
-v db-data:/var/lib/postgresql/data \
postgres:15
docker exec postgres-new cat /var/lib/postgresql/data/test.txtWorkflow di atas mendemonstrasikan siklus penuh persistent storage. Volume db-data dibuat secara eksplisit. Data ditulis ke dalam container, container dihapus, dan data tetap tersedia ketika container baru dibuat dengan volume yang sama. Output terakhir membuktikan bahwa data tidak hilang meskipun container asli sudah tidak ada.
Menghubungkan Beberapa Container dalam Satu Jaringan Kustom
Aplikasi modern umumnya terdiri dari beberapa service yang saling berinteraksi. Docker menyediakan cara elegan untuk mengelompokkan service-service tersebut melalui custom bridge network. Container yang berada dalam network yang sama dapat saling berkomunikasi menggunakan nama container sebagai hostname, yang menghilangkan kebutuhan untuk mengelola IP address secara manual.
Saat menggunakan docker-compose, Docker secara default membuat network kustom untuk setiap project. Semua service yang didefinisikan dalam file docker-compose.yml akan terhubung ke network tersebut secara otomatis. Kemampuan ini menyederhanakan konfigurasi dan memastikan isolasi antar project.
Penggabungan network dan volume dalam satu setup multi-container menjadi pola standar untuk deployment aplikasi. Web server dapat mengakses database melalui nama service, sementara data database disimpan di named volume untuk memastikan persistensi.
Verifikasi konektivitas dapat dilakukan dari dalam container menggunakan ping atau curl. Jika container dapat menjangkau nama service lain dan mendapatkan respons, konfigurasi network berhasil diterapkan.
version: "3.9"
services:
web:
image: nginx:alpine
networks:
- backend
volumes:
- web-data:/usr/share/nginx/html
db:
image: postgres:15
networks:
- backend
volumes:
- db-data:/var/lib/postgresql/data
cache:
image: redis:alpine
networks:
- backend
networks:
backend:
driver: bridge
volumes:
web-data:
db-data:File konfigurasi di atas mendefinisikan tiga service dalam satu network kustom bernama backend. Setiap service menggunakan named volume untuk penyimpanan data. Service web, db, dan cache dapat saling berkomunikasi langsung tanpa ekspos port ke host, yang meningkatkan keamanan internal.
Praktik Terbaik untuk Network dan Volume di Production
Penerapan network dan volume di environment production memerlukan perhatian khusus terhadap keamanan, konsistensi, dan operasional. Beberapa praktik berikut dapat membantu menjaga stabilitas sistem.
Pertama, selalu gunakan named volume daripada bind mount untuk deployment production. Named volume menjamin portability dan konsistensi di berbagai environment. Path tidak bergantung pada struktur direktori host, sehingga container dapat dijalankan di mesin mana pun tanpa modifikasi.
Kedua, hindari penggunaan host network di production. Mode ini menghilangkan isolasi keamanan container dan membuka potensi konflik port dengan service di host. Isolasi jaringan adalah salah satu keunggulan utama container yang harus dipertahankan.
Ketiga, implementasikan segmentasi network berdasarkan tipe service. Pisahkan network frontend untuk service yang menerima traffic eksternal dan network backend untuk service internal seperti database dan cache. Segmentasi ini membatasi dampak jika satu service dikompromikan.
Keempat, lakukan backup volume secara teratur. Gunakan perintah docker run dengan volume mount ke container backup untuk membuat salinan data. Schedule backup ini secara otomatis menggunakan cron atau orchestrator.
Kelima, gunakan docker volume prune dengan hati-hati. Perintah ini menghapus volume yang tidak terpakai, namun dapat menghapus data yang masih diperlukan jika container dalam keadaan berhenti. Selalu verifikasi daftar volume sebelum menjalankan perintah tersebut.
Terakhir, pantau penggunaan storage dan network secara aktif. Perintah docker system df memberikan gambaran umum penggunaan resource. Untuk monitoring lebih detail, integrasikan dengan tools seperti Prometheus dan Grafana.
Ingin menguasai container orchestration, CI/CD pipeline, dan deployment production dengan Docker secara menyeluruh? Bootcamp Docker & DevOps di Rumah Coding menyediakan kurikulum praktis yang membawa skill-mu ke level berikutnya.
Course Terkait
Deep Learning Bootcamp
A beginner-friendly, highly interactive bootcamp designed to take you from foundational concepts to deploying real-world Artificial Intelligence applications. Through a completely project-based approach, you will master the core of Deep Learning, Artificial Neural Networks, and Computer Vision using Python and TensorFlow, ultimately building a professional-grade AI web application for your portfolio.
GreenGuard: Intelligent Plant Disease Diagnosis Web App
- Interactive Image Upload UI: A clean, user-friendly interface built with Streamlit that supports drag-and-drop image uploads directly from a computer or mobile phone.
- Real-Time AI Inference: Utilizes a lightweight, optimized CNN model (like MobileNetV2) to process the image and return a diagnosis in seconds without heavy server load.
- Confidence Scoring Dashboard: Visually displays the model's prediction probability (e.g., "95% confident this is Tomato Late Blight") using interactive progress bars or charts.
LLM Bootcamp
This project-based bootcamp is designed for beginners to dive practically into the world of Large Language Models (LLMs). Through hands-on building, you will learn how to interact with top-tier AI APIs, master prompt engineering, orchestrate complex workflows using LangChain, and implement Retrieval-Augmented Generation (RAG) to query your own documents. By the end of this course, you will have the skills to build, test, and deploy a fully functional, custom AI web application.
Domain-Specific AI Knowledge Assistant
- Dynamic Document Processing: A sidebar interface allowing users to upload new PDF or TXT files, which the app automatically chunks, embeds, and stores in the vector database.
- Context-Aware Chat UI: A modern chat interface built with Streamlit that maintains conversation history, allowing users to ask follow-up questions naturally.
- Strict Guardrails (Anti-Hallucination): System instructions designed so the AI politely declines to answer questions that fall outside the context of the uploaded documents.
Machine Learning Bootcamp
A beginner-friendly, 7-week project-based bootcamp designed to take you from Python basics to deploying your first Machine Learning model. Through hands-on practice, you will master essential data manipulation, build predictive algorithms, and develop an end-to-end, industry-ready application to kickstart your career in data science.
End-to-End Student Success Predictor
- Automated Data Pipeline: A preprocessing script that automatically cleans missing values, encodes categorical data (like course type or student background), and scales numerical inputs.
- Predictive Engine: A tuned machine learning classification model (e.g., Random Forest) specifically optimized for high Recall, ensuring that "at-risk" students are not missed.
- Interactive Web Dashboard: A user-friendly Streamlit interface featuring a sidebar where instructors can manually input a student's study hours, quiz scores, and login frequency to get an instant pass/fail probability.