Przejdź do treści

Rozwiązania · Kontenery

Jakiego serwera potrzebuje Docker?

Kontenery to procesy współdzielące jedno jądro, a nie małe maszyny wirtualne. Demon zajmuje około 100 MB, a wszystko ponad to to już Twoje własne procesy. Odpowiedź jest więc mniejsza, niż sugeruje pytanie: proxy, aplikacja, baza danych i cache zajmują razem około 515 MB, co z zapasem mieści się w BD-8 za $12.90.

Ile naprawdę zajmuje kontener

Zakresy, nie benchmarki

Twój obraz, konfiguracja i ruch wpływają na te wartości bardziej niż jakakolwiek tabela. Uruchom docker stats na własnym stosie: to jedyna liczba, która dotyczy Ciebie.

Typowa pamięć rezydentna dla popularnych obciążeń kontenerowych
KontenerTypowa pamięćMieści się w BD-8 (8 GB)
Reverse proxynginx, Caddy, Traefik15–60 MB129 w górnym zakresie
Mała aplikacja webowaNode, Python, Go: jeden proces60–200 MB38 w górnym zakresie
PostgreSQL lub MySQLmały zbiór danych, domyślna pula200–500 MB15 w górnym zakresie
Redisjako cache, ograniczony przez maxmemory20–200 MB38 w górnym zakresie
Usługa JVMJava, Kotlin, Elasticsearch500–2000 MB3 w górnym zakresie

Rachunek

Co mieści każdy plan

Pamięć minus 300 MB na system operacyjny i 100 MB na demona, podzielona przez to, ile zajmują Twoje kontenery. Środkowa kolumna to cały stos (proxy, aplikacja, baza danych, cache) o rozmiarze około 515 MB.

Pojemność kontenerów i stosów w każdym planie, z dyskiem i aktualnymi cenami
PlanRAMCałe stosyMałe aplikacjeDyskCenaWdróż
VPS-11 GB1325 GB$9.90Wdróż
BD-88 GB1538100 GB$12.90Wdróż
BD-1212 GB2359200 GB$17.90Wdróż
BD-2424 GB46120300 GB$31.90Wdróż

Dysk to druga niespodzianka, na którą trafia się później: obrazy, wolumeny i logi po cichu się gromadzą. Dodaj docker system prune do cotygodniowego crona, zanim stanie się to pilne, a nie potem.

Przeciwko sobie

Kiedy nie warto tego kupować

Zarządzana platforma kontenerowa kosztuje więcej, bo zajmuje się utrzymaniem. To realna usługa, za którą warto zapłacić.

VPS daje Ci dostęp root i przekazuje Ci aktualizacje, restarty, certyfikaty i dyżury. To znacznie tańsze i rzeczywiście wymaga więcej pracy. Jeśli nie chcesz tej pracy, uczciwą odpowiedzią jest platforma zarządzana i wolimy ją wskazać, niż sprzedać maszynę, która zostanie porzucona z niezałatanym demonem wystawionym do internetu. Dwie mniejsze rady z tej samej serii: ustaw limit pamięci dla każdego kontenera, aby padał ten, który źle działa, a nie Twoja baza danych, i nie sięgaj po Kubernetes na jednej maszynie. Orkiestrator, który nie ma czego rozplanować, to tylko złożoność.

Pytania

O co ludzie pytają przed zakupem.

Ile RAM zużywa sam Docker?
Bardzo mało i to właśnie zaskakuje ludzi. Demon Dockera zajmuje około 100 MB, a każdy kolejny kontener to po prostu proces: nie ma drugiego systemu operacyjnego, drugiego jądra ani stałego kosztu na kontener, jak w przypadku maszyny wirtualnej. Rachunek jest więc prosty: pamięć Twojej maszyny minus około 300 MB na system operacyjny i 100 MB na demona, podzielona między procesy, które faktycznie uruchamiasz.
Ile kontenerów uruchomi mały VPS?
Więcej, niż sugeruje pytanie, bo „kontener” nie jest jednostką rozmiaru. Dziesięć reverse proxy i jeden Elasticsearch to zupełnie różne maszyny. Na BD-8 (8 GB za $12.90) proxy, aplikacja webowa, baza danych i cache zajmują razem około 515 MB, co zostawia większość maszyny wolną. Tabela powyżej wykonuje to dzielenie; uruchom `docker stats` na własnym stosie, aby uzyskać liczbę, która naprawdę dotyczy Ciebie.
Czy VPS jest tańszy niż zarządzana platforma kontenerowa?
Prawie zawsze pod względem ceny, ale to nie całe porównanie. Platforma kosztuje więcej, bo zajmuje się utrzymaniem: aktualizacjami, restartami, certyfikatami, dyżurem o 3 w nocy. VPS daje Ci dostęp root i oddaje Ci to wszystko. Jeśli chcesz uruchamiać kontenery i jesteś gotów wziąć na siebie tę pracę, VPS jest znacznie tańszy. Jeśli wolisz nie, zapłać za platformę. Wolimy to powiedzieć, niż sprzedać Ci maszynę, która zostanie porzucona z niezałatanym demonem.
Czy potrzebuję Docker Swarm lub Kubernetes?
Na jednej maszynie nie. Compose wystarcza dla stosu działającego na jednym serwerze i jest właściwą odpowiedzią dla zdecydowanej większości instalacji self-hosted. Zadaniem orkiestratora jest planowanie pracy na wielu maszynach, a przy jednej maszynie nie ma czego planować. Sięgnij po Kubernetes, gdy naprawdę masz kilka maszyn i powód, by przyjąć tę złożoność, nie wcześniej.
Co pada pierwsze: pamięć, CPU czy dysk?
Zwykle pamięć, i to w głośny sposób: mechanizm OOM killer jądra wybiera proces i go kończy, co wygląda jak tajemniczy restart kontenera. Ustaw limity pamięci dla każdego kontenera, aby padał ten, który źle działa, a nie Twoja baza danych. Dysk to druga niespodzianka: obrazy, wolumeny i logi po cichu się gromadzą, więc `docker system prune` powinno trafić do cotygodniowego crona na długo, zanim stanie się to pilne.
Jaki obraz powinien działać na hoście?
Dowolny z naszych: każdy plan obsługuje każdy obraz, a Docker działa na wszystkich. Ubuntu LTS to rozsądny wybór domyślny, jeśli nie masz preferencji, po prostu dlatego, że większość dokumentacji kontenerów go zakłada. Dystrybucja ma znacznie mniejsze znaczenie, niż mogłoby się wydawać: kontenery przynoszą własną przestrzeń użytkownika, więc host to niewiele więcej niż jądro i demon.