Pertanyaan yang sering muncul ketika mulai memahami Docker adalah:
- Apakah satu VPS bisa menjalankan puluhan atau ratusan container?
- Apakah dalam satu server hanya ada satu file docker-compose.yml?
- Bagaimana struktur yang benar untuk production?
Jawabannya tidak sesederhana “ya” atau “tidak”, karena semuanya tergantung arsitektur dan kebutuhan.
Mari kita bahas secara sistematis.
1. Apakah 1 Docker Bisa Menjalankan Banyak Container?
Jawaban singkat: Ya, bisa.
Secara teknis, satu Docker Engine dalam satu VPS bisa menjalankan:
- Puluhan container
- Bahkan ratusan container
Selama:
- CPU cukup
- RAM cukup
- Storage cukup
- I/O disk memadai
Docker bukan membatasi jumlah container, tetapi sumber daya server yang membatasi.
Namun, dalam praktik production, bukan jumlah container yang menjadi fokus, melainkan:
- Manajemen resource
- Stabilitas
- Arsitektur yang terstruktur
1.1 Realita di Production
Dalam 1 VPS kecil (misalnya 2–4 GB RAM), biasanya:
- 5–15 container masih sangat wajar
Dalam VPS besar atau dedicated server:
- 20–50 container sangat umum
Di lingkungan enterprise atau cluster:
- Bisa ratusan hingga ribuan container (biasanya menggunakan Kubernetes)
Jadi secara konsep, Docker memang dirancang untuk skala besar.
2. Apakah Hanya Ada 1 File docker-compose.yml?
Jawaban: Tidak harus satu.
Ini bagian yang penting dipahami.
Docker Engine hanya satu di server.
Tetapi file docker-compose.yml bisa:
- Satu file untuk semua aplikasi
- Atau satu file per aplikasi / per project
Dan best practice biasanya adalah:
Satu docker-compose.yml untuk satu aplikasi atau satu stack.
3. Perbandingan Dua Pendekatan
Pendekatan 1: Semua dalam Satu docker-compose.yml
Contoh:
- WordPress A
- WordPress B
- Laravel App
- Database
- Redis
- Reverse Proxy
Semua dimasukkan ke satu file besar.
Kelebihan:
- Sederhana
- Semua dalam satu tempat
Kekurangan:
- File sangat panjang
- Sulit dikelola jika aplikasi banyak
- Risiko salah edit tinggi
- Tidak modular
Pendekatan ini cocok untuk:
- Belajar
- Project kecil
- Server pribadi
Pendekatan 2: Satu Compose Per Stack (Lebih Profesional)
Struktur seperti ini lebih umum di production:
/srv/
├── reverse-proxy/
│ └── docker-compose.yml
├── wordpress-site1/
│ └── docker-compose.yml
├── wordpress-site2/
│ └── docker-compose.yml
└── monitoring/
└── docker-compose.yml
Artinya:
- Reverse proxy punya file sendiri
- Setiap website punya stack sendiri
- Monitoring punya stack sendiri
Keuntungan:
- Modular
- Lebih mudah migrasi per aplikasi
- Tidak merusak sistem lain jika satu stack bermasalah
- Lebih rapi
Ini yang biasanya dipakai sysadmin serius.
4. Bagaimana Docker Mengelola Banyak Stack?
Walaupun file compose banyak, tetap hanya ada:
- Satu Docker Engine
- Satu daemon Docker
Ketika kamu menjalankan:
docker compose up -d
Docker hanya membaca file di folder tersebut dan membuat container sesuai definisinya.
Semua container tetap berjalan dalam engine yang sama, tetapi terpisah secara logis melalui:
- Network
- Volume
- Nama service
- Project name
5. Apakah Aman Menjalankan Banyak Container dalam 1 VPS?
Aman jika:
- Resource cukup.
- Tidak semua container expose port ke publik.
- Menggunakan reverse proxy untuk routing.
- Database tidak diekspos keluar.
- Resource limit diatur (CPU dan memory limit).
Docker memungkinkan pembatasan resource, misalnya:
- Batasi penggunaan RAM per container.
- Batasi penggunaan CPU.
Ini penting jika container sudah banyak.
6. Struktur Ideal untuk Satu VPS Production Modern
Untuk satu VPS production yang matang, biasanya:
- 1 Reverse Proxy Stack
- Beberapa Application Stack
- 1 Monitoring Stack
- 1 Management Stack
Setiap stack memiliki:
- docker-compose.yml sendiri
- network sendiri (atau share network tertentu)
- volume sendiri
Dengan pendekatan ini, kamu bisa punya:
- 10 aplikasi
- 30–40 container
- Tanpa membuat sistem berantakan
7. Kapan Satu docker-compose.yml Saja Cukup?
Cukup jika:
- Hanya 1 aplikasi
- Tidak ada multi-tenant
- Server kecil
- Untuk belajar atau lab
Untuk production serius dengan banyak aplikasi, lebih baik pisahkan per stack.
8. Kesimpulan Besar
- Satu Docker Engine bisa menjalankan puluhan bahkan ratusan container, tergantung resource.
- Tidak wajib hanya satu docker-compose.yml.
- Best practice production adalah:
- Satu compose per aplikasi atau per stack.
- Modular.
- Terstruktur dalam folder.
- Docker bukan membatasi jumlah container, tetapi hardware server yang membatasi.
- Semakin banyak container, semakin penting:
- Manajemen network
- Manajemen volume
- Pembatasan resource
- Monitoring
Penutup
Jika kamu memahami ini, berarti kamu sudah mulai berpikir seperti sysadmin modern:
- Server bukan tempat install aplikasi.
- Server adalah Docker host.
- Aplikasi berjalan sebagai service terpisah.
- Infrastruktur bisa direbuild kapan saja.