Naar de inhoud

Oplossingen · Containers

Hoeveel server heeft Docker nodig?

Containers zijn processen die één kernel delen, geen kleine virtuele machines. De daemon gebruikt ongeveer 100 MB en alles daarna zijn gewoon uw eigen processen. Het antwoord is dus kleiner dan de vraag doet vermoeden: een proxy, een app, een database en een cache komen samen op ongeveer 515 MB, wat ruim past op BD-8 voor $12.90.

Wat een container werkelijk gebruikt

Bereiken, geen benchmarks

Uw image, configuratie en verkeer beïnvloeden deze waarden meer dan welke tabel ook. Draai docker stats op uw eigen stack: dat is het enige getal dat voor u geldt.

Gemiddeld resident geheugen voor veelvoorkomende containerworkloads
ContainerGemiddeld geheugenPast op BD-8 (8 GB)
Een reverse proxynginx, Caddy, Traefik15–60 MB129 aan de bovenkant
Een kleine webappNode, Python, Go: één proces60–200 MB38 aan de bovenkant
PostgreSQL of MySQLkleine dataset, standaardpool200–500 MB15 aan de bovenkant
Redisals cache, begrensd door maxmemory20–200 MB38 aan de bovenkant
Een JVM-dienstJava, Kotlin, Elasticsearch500–2000 MB3 aan de bovenkant

De rekensom

Wat elk pakket aankan

Geheugen, min 300 MB voor het besturingssysteem en 100 MB voor de daemon, gedeeld door wat uw containers gebruiken. De middelste kolom is een complete stack (proxy, app, database, cache) van ongeveer 515 MB.

Capaciteit voor containers en stacks per pakket, met schijfruimte en actuele prijzen
PakketRAMComplete stacksKleine appsSchijfPrijsImplementeren
VPS-11 GB1325 GB$9.90Implementeren
BD-88 GB1538100 GB$12.90Implementeren
BD-1212 GB2359200 GB$17.90Implementeren
BD-2424 GB46120300 GB$31.90Implementeren

Schijfruimte is de tweede verrassing, en die komt pas later: images, volumes en logs stapelen zich ongemerkt op. Zet docker system prune in een wekelijkse cron voordat het dringend wordt, niet erna.

Tegen onszelf

Wanneer u dit niet moet kopen

Een beheerd containerplatform kost meer omdat het het beheer doet. Dat is iets reëels om te kopen.

Een VPS geeft u root en legt de updates, de herstarts, de certificaten en de nachtelijke storingsmeldingen bij u. Dat is aanzienlijk goedkoper en het is echt meer werk. Wilt u dat werk niet, dan is een beheerd platform het eerlijke antwoord, en we verwijzen u daar liever naar dan dat we een machine verkopen die verwaarloosd raakt met een ongepatchte daemon die openstaat naar internet. Twee kleinere onderdelen van hetzelfde advies: stel voor elke container een geheugenlimiet in, zodat een container die zich misdraagt stopt in plaats van uw database, en gebruik geen Kubernetes op één machine. Een orchestrator zonder iets om in te plannen is alleen maar complexiteit.

Vragen

Wat mensen vragen voordat ze er een kopen.

Hoeveel RAM gebruikt Docker zelf?
Heel weinig, en dat is wat mensen verrast. De Docker-daemon gebruikt ongeveer 100 MB en elke container daarna is gewoon een proces: er is geen tweede besturingssysteem, geen tweede kernel en geen vaste kosten per container zoals bij een virtuele machine. De rekensom is dus eenvoudig: het geheugen van uw machine, min ongeveer 300 MB voor het besturingssysteem en 100 MB voor de daemon, verdeeld over de processen die u werkelijk draait.
Hoeveel containers kan een kleine VPS draaien?
Meer dan de vraag suggereert, want "een container" is geen maat voor grootte. Tien reverse proxy's en één Elasticsearch zijn totaal verschillende machines. Op BD-8 (8 GB voor $12.90) komen een proxy, een webapp, een database en een cache samen op ongeveer 515 MB, waardoor het grootste deel van de machine vrij blijft. De tabel hierboven maakt de deling; voer `docker stats` uit op uw eigen stack voor het getal dat echt op u van toepassing is.
Is een VPS goedkoper dan een beheerd containerplatform?
Bijna altijd op prijs, en dat is niet de hele vergelijking. Een platform rekent meer omdat het het beheer doet: updates, herstarts, certificaten, de storingsmelding om 3 uur 's nachts. Een VPS geeft u root en legt dat allemaal weer bij u. Wilt u containers draaien en bent u bereid dat werk zelf te doen, dan is een VPS aanzienlijk goedkoper. Hebt u daar liever geen omkijken naar, betaal dan het platform. Dat zeggen we liever eerlijk dan dat we u een machine verkopen die verwaarloosd raakt met een ongepatchte daemon erop.
Heb ik Docker Swarm of Kubernetes nodig?
Op één machine niet. Compose volstaat voor een stack die op één server draait, en het is het juiste antwoord voor de overgrote meerderheid van self-hosted opstellingen. De taak van een orchestrator is plannen over meerdere machines, en met één machine valt er niets te plannen. Kies voor Kubernetes als u echt meerdere machines heeft en een reden voor de complexiteit, niet eerder.
Wat loopt het eerst vast: geheugen, CPU of schijf?
Meestal geheugen, en dat gaat hard mis: de out-of-memory killer van de kernel kiest een proces en beëindigt het, wat eruitziet als een container die zonder duidelijke reden herstart. Stel per container geheugenlimieten in, zodat de container die zich misdraagt degene is die stopt en niet uw database. Schijfruimte is de tweede verrassing: images, volumes en logs stapelen zich ongemerkt op, dus `docker system prune` hoort in een wekelijkse cron, lang voordat het dringend wordt.
Welke image moet de host draaien?
Elk van onze images: alle pakketten draaien elke image en Docker draait op allemaal. Ubuntu LTS is de standaardkeuze als u geen voorkeur heeft, simpelweg omdat de meeste containerdocumentatie ervan uitgaat. De distributie maakt veel minder uit dan het lijkt: de containers brengen hun eigen userland mee, dus de host is weinig meer dan een kernel en een daemon.