Langsung ke konten

Solusi · Container

Berapa besar server yang dibutuhkan Docker?

Container adalah proses yang berbagi satu kernel, bukan mesin virtual kecil. Daemon memakai sekitar 100 MB, dan sisanya hanyalah proses Anda sendiri. Jadi jawabannya lebih kecil daripada yang diduga: proxy, aplikasi, database, dan cache bersama-sama memakai sekitar 515 MB, yang muat dengan ruang tersisa di BD-8 seharga $12.90.

Memori yang sebenarnya dipakai sebuah container

Rentang perkiraan, bukan benchmark

Image, konfigurasi, dan trafik Anda lebih memengaruhi angka-angka ini daripada tabel mana pun. Jalankan docker stats pada stack Anda sendiri; hanya angka itulah yang berlaku bagi Anda.

Memori resident biasa untuk beban kerja container yang umum
ContainerMemori biasaMuat di BD-8 (8 GB)
Reverse proxynginx, Caddy, Traefik15–60 MB129 di batas atas
Aplikasi web kecilNode, Python, Go: satu proses60–200 MB38 di batas atas
PostgreSQL atau MySQLdataset kecil, pool default200–500 MB15 di batas atas
Redissebagai cache, dibatasi oleh maxmemory20–200 MB38 di batas atas
Layanan JVMJava, Kotlin, Elasticsearch500–2000 MB3 di batas atas

Hitungannya

Kapasitas setiap paket

Memori, dikurangi 300 MB untuk sistem operasi dan 100 MB untuk daemon, lalu dibagi dengan memori yang dipakai container Anda. Kolom tengah adalah satu stack utuh (proxy, aplikasi, database, cache) sekitar 515 MB.

Kapasitas container dan stack per paket, beserta disk dan harga terkini
PaketRAMStack utuhAplikasi kecilDiskHargaDeploy
VPS-11 GB1325 GB$9.90Deploy
BD-88 GB1538100 GB$12.90Deploy
BD-1212 GB2359200 GB$17.90Deploy
BD-2424 GB46120300 GB$31.90Deploy

Disk adalah kejutan kedua, dan biasanya baru terasa belakangan: image, volume, dan log menumpuk tanpa disadari. Masukkan docker system prune ke cron mingguan sebelum keadaannya mendesak, bukan sesudahnya.

Melawan diri sendiri

Kapan sebaiknya Anda tidak membeli ini

Platform container terkelola lebih mahal karena platform itulah yang mengoperasikannya. Itu memang layanan yang layak dibeli.

VPS memberi Anda akses root sekaligus menyerahkan urusan pembaruan, restart, sertifikat, dan siaga panggilan darurat kepada Anda. Biayanya jauh lebih murah, dan pekerjaannya memang lebih banyak. Jika Anda tidak ingin menangani pekerjaan itu, platform terkelola adalah jawaban yang jujur, dan kami lebih suka menyarankannya daripada menjual mesin yang akhirnya terbengkalai dengan daemon tanpa patch yang terbuka ke internet. Dua saran kecil dari prinsip yang sama: tetapkan batas memori pada setiap container agar container yang bermasalah yang mati, bukan database Anda; dan jangan memakai Kubernetes di satu mesin, karena orkestrator tanpa apa pun untuk dijadwalkan hanya menambah kerumitan.

Pertanyaan

Pertanyaan orang sebelum membelinya.

Berapa banyak RAM yang dipakai Docker itu sendiri?
Sangat sedikit, dan bagian inilah yang mengejutkan banyak orang. Daemon Docker memakai sekitar 100 MB, dan setiap container sesudahnya hanyalah sebuah proses: tidak ada sistem operasi kedua, tidak ada kernel kedua, dan tidak ada biaya tetap per container seperti pada mesin virtual. Jadi hitungannya sederhana: memori mesin Anda, dikurangi sekitar 300 MB untuk sistem operasi dan 100 MB untuk daemon, lalu dibagi di antara proses yang benar-benar Anda jalankan.
Berapa banyak container yang dapat dijalankan VPS kecil?
Lebih banyak daripada yang tersirat dalam pertanyaan ini, karena "satu container" bukanlah satuan ukuran. Sepuluh reverse proxy dan satu Elasticsearch membutuhkan mesin yang sangat berbeda. Di BD-8 (8 GB seharga $12.90), proxy, aplikasi web, database, dan cache bersama-sama memakai sekitar 515 MB, sehingga sebagian besar kapasitas mesin masih tersisa. Tabel di atas sudah melakukan pembagiannya; jalankan `docker stats` pada stack Anda sendiri untuk mendapatkan angka yang benar-benar berlaku bagi Anda.
Apakah VPS lebih murah daripada platform container terkelola?
Dari segi harga hampir selalu ya, tetapi itu belum seluruh perbandingannya. Platform mengenakan biaya lebih tinggi karena platform itulah yang mengoperasikan semuanya: pembaruan, restart, sertifikat, dan siaga panggilan darurat pukul 3 pagi. VPS memberi Anda akses root dan menyerahkan semua itu kembali kepada Anda. Jika Anda ingin menjalankan container dan bersedia menangani pekerjaan itu, VPS jauh lebih murah. Jika tidak, bayarlah platform. Kami lebih suka mengatakannya terus terang daripada menjual mesin yang akhirnya terbengkalai dengan daemon tanpa patch di dalamnya.
Apakah saya memerlukan Docker Swarm atau Kubernetes?
Di satu mesin, tidak. Compose sudah cukup untuk stack yang berada di satu server, dan itulah jawaban yang tepat untuk sebagian besar setup self-hosted. Tugas orkestrator adalah menjadwalkan beban kerja di beberapa mesin; dengan satu mesin, tidak ada yang perlu dijadwalkan. Gunakan Kubernetes jika Anda memang memiliki beberapa mesin dan alasan untuk menerima kerumitannya, bukan sebelum itu.
Apa yang lebih dulu bermasalah: memori, CPU, atau disk?
Biasanya memori, dan kegagalannya tampak jelas: out-of-memory killer milik kernel memilih satu proses lalu menghentikannya, sehingga terlihat seperti container yang restart tanpa sebab. Tetapkan batas memori per container agar yang mati adalah container yang bermasalah, bukan database Anda. Disk adalah kejutan kedua: image, volume, dan log menumpuk tanpa disadari, jadi `docker system prune` sebaiknya masuk ke cron mingguan jauh sebelum keadaannya mendesak.
Image mana yang sebaiknya dijalankan host?
Image mana pun dari kami. Setiap paket dapat menjalankan setiap image, dan Docker berjalan di semuanya. Jika Anda tidak punya preferensi, Ubuntu LTS adalah pilihan default yang layak, karena sebagian besar dokumentasi container mengasumsikannya. Pilihan distribusi jauh kurang penting daripada kesannya: container membawa userland sendiri, sehingga host tidak lebih dari kernel dan daemon.