Spring til indhold

Løsninger · Containere

Hvor stor en server kræver Docker?

Containere er processer, der deler én kerne, ikke små virtuelle maskiner. Daemonen bruger omkring 100 MB, og alt derefter er blot dine egne processer. Svaret er derfor mindre, end spørgsmålet forventer: en proxy, en app, en database og en cache fylder tilsammen cirka 515 MB, hvilket passer med god plads på BD-8 til $12.90.

Hvad en container faktisk bruger

Intervaller, ikke benchmarks

Dit image, din konfiguration og din trafik påvirker disse tal mere, end nogen tabel kan. Kør docker stats på din egen stak: det er det eneste tal, der gælder for dig.

Typisk resident hukommelse for almindelige container-arbejdsbyrder
ContainerTypisk hukommelsePasser på BD-8 (8 GB)
En reverse proxynginx, Caddy, Traefik15–60 MB129 i den høje ende
En lille webappNode, Python, Go: én proces60–200 MB38 i den høje ende
PostgreSQL eller MySQLlille datasæt, standardpool200–500 MB15 i den høje ende
Redissom cache, begrænset af maxmemory20–200 MB38 i den høje ende
En JVM-tjenesteJava, Kotlin, Elasticsearch500–2000 MB3 i den høje ende

Regnestykket

Hvad hver plan kan rumme

Hukommelse minus 300 MB til operativsystemet og 100 MB til daemonen, delt med det, dine containere bruger. Den midterste kolonne er en hel stak (proxy, app, database, cache) på cirka 515 MB.

Kapacitet til containere og stakke pr. plan, med disk og aktuelle priser
PlanRAMHele stakkeSmå appsDiskPrisUdrul
VPS-11 GB1325 GB$9.90Udrul
BD-88 GB1538100 GB$12.90Udrul
BD-1212 GB2359200 GB$17.90Udrul
BD-2424 GB46120300 GB$31.90Udrul

Disk er den anden overraskelse, og den man møder senere: images, volumes og logs hober sig stille op. Læg docker system prune i et ugentligt cronjob, før det bliver akut, ikke bagefter.

Mod os selv

Hvornår du ikke bør købe dette

En administreret containerplatform koster mere, fordi den står for driften. Det er noget reelt at betale for.

En VPS giver dig root og overlader dig opdateringerne, genstarterne, certifikaterne og vagttelefonen. Det er markant billigere, og det er reelt mere arbejde. Vil du ikke have det arbejde, er en administreret platform det ærlige svar, og vi henviser hellere til den end at sælge en maskine, der ender forladt med en upatchet daemon eksponeret mod internettet. To mindre dele af samme råd: sæt en hukommelsesgrænse på hver container, så det er den, der opfører sig forkert, der dør, og ikke din database, og grib ikke til Kubernetes på én maskine. En orkestrator uden noget at planlægge er bare kompleksitet.

Spørgsmål

Hvad folk spørger om, før de køber.

Hvor meget RAM bruger Docker selv?
Meget lidt, og det er den del, der overrasker folk. Docker-daemonen bruger cirka 100 MB, og hver container derefter er blot en proces. Der er intet ekstra operativsystem, ingen ekstra kerne og ingen fast omkostning pr. container, som der er med en virtuel maskine. Regnestykket er derfor enkelt: maskinens hukommelse minus cirka 300 MB til operativsystemet og 100 MB til daemonen, fordelt på de processer, du faktisk kører.
Hvor mange containere kan en lille VPS køre?
Flere, end spørgsmålet antyder, for "en container" er ikke en størrelsesenhed. Ti reverse proxyer og én Elasticsearch kræver vidt forskellige maskiner. På BD-8 (8 GB til $12.90) fylder en proxy, en webapp, en database og en cache tilsammen cirka 515 MB, så det meste af maskinen er ledig. Tabellen ovenfor laver divisionen; kør `docker stats` på din egen stak for at få det tal, der faktisk gælder for dig.
Er en VPS billigere end en administreret containerplatform?
Næsten altid, når det gælder pris, men det er ikke hele sammenligningen. En platform tager mere, fordi den står for driften: opdateringer, genstarter, certifikater, vagttelefonen kl. 3 om natten. En VPS giver dig root og overlader alt det til dig. Vil du køre containere og er villig til at påtage dig det arbejde, er en VPS markant billigere. Vil du helst ikke, så betal for platformen. Det siger vi hellere end at sælge dig en maskine, der ender forladt med en upatchet daemon.
Har jeg brug for Docker Swarm eller Kubernetes?
På én maskine: nej. Compose er nok til en stak, der lever på én server, og det er det rigtige svar for langt de fleste selvhostede opsætninger. En orkestrators opgave er at planlægge på tværs af maskiner, og med én maskine er der intet at planlægge. Grib til Kubernetes, når du reelt har flere maskiner og en grund til kompleksiteten, ikke før.
Hvad går først: hukommelse, CPU eller disk?
Som regel hukommelse, og det sker højlydt: kernens out-of-memory killer vælger en proces og afslutter den, hvilket ligner en container, der mystisk genstarter. Sæt hukommelsesgrænser pr. container, så det er den, der opfører sig forkert, der dør, og ikke din database. Disk er den anden overraskelse: images, volumes og logs hober sig stille op, så `docker system prune` hører hjemme i et ugentligt cronjob længe før, det bliver akut.
Hvilket OS-image skal værten køre?
Et hvilket som helst af vores. Alle planer kører alle images, og Docker kører på dem alle. Ubuntu LTS er standardvalget, hvis du ikke har en præference, simpelthen fordi det meste containerdokumentation forudsætter det. Distributionen betyder langt mindre, end man skulle tro: containerne medbringer deres eget userland, så værten er ikke meget mere end en kerne og en daemon.