Zum Inhalt springen

Lösungen · Container

Wie viel Server braucht Docker?

Container sind Prozesse, die sich einen Kernel teilen, keine kleinen virtuellen Maschinen: Der Daemon belegt etwa 100 MB, und alles danach sind nur Ihre eigenen Prozesse. Die Antwort fällt also kleiner aus, als die Frage erwarten lässt: Ein Proxy, eine App, eine Datenbank und ein Cache kommen zusammen auf etwa 515 MB, was mit reichlich Reserve auf BD-8 für $12.90 passt.

Was ein Container tatsächlich belegt

Bandbreiten, keine Benchmarks

Ihr Image, Ihre Konfiguration und Ihr Traffic beeinflussen diese Werte stärker, als es eine Tabelle kann. Führen Sie docker stats auf Ihrem eigenen Stack aus: Das ist die einzige Zahl, die für Sie gilt.

Typischer residenter Arbeitsspeicher für gängige Container-Workloads
ContainerTypischer ArbeitsspeicherPasst auf BD-8 (8 GB)
Ein Reverse Proxynginx, Caddy, Traefik15–60 MB129 am oberen Ende
Eine kleine Web-AppNode, Python, Go: ein Prozess60–200 MB38 am oberen Ende
PostgreSQL oder MySQLkleiner Datenbestand, Standard-Pool200–500 MB15 am oberen Ende
Redisals Cache, begrenzt durch maxmemory20–200 MB38 am oberen Ende
Ein JVM-DienstJava, Kotlin, Elasticsearch500–2000 MB3 am oberen Ende

Die Rechnung

Was jeder Tarif aufnimmt

Arbeitsspeicher abzüglich 300 MB für das Betriebssystem und 100 MB für den Daemon, geteilt durch das, was Ihre Container belegen. Die mittlere Spalte ist ein ganzer Stack (Proxy, App, Datenbank, Cache) mit etwa 515 MB.

Container- und Stack-Kapazität pro Tarif, mit Speicherplatz und aktuellen Preisen
TarifRAMGanze StacksKleine AppsSpeicherplatzPreisBereitstellen
VPS-11 GB1325 GB$9.90Bereitstellen
BD-88 GB1538100 GB$12.90Bereitstellen
BD-1212 GB2359200 GB$17.90Bereitstellen
BD-2424 GB46120300 GB$31.90Bereitstellen

Speicherplatz ist die zweite Überraschung, und die, auf die man später stößt: Images, Volumes und Logs sammeln sich unbemerkt an. Legen Sie docker system prune in einen wöchentlichen Cronjob, bevor es dringend wird, nicht danach.

Gegen uns selbst

Wann Sie das nicht kaufen sollten

Eine Managed-Container-Plattform kostet mehr, weil sie den Betrieb übernimmt. Das ist eine echte Leistung, die man kaufen kann.

Ein VPS gibt Ihnen root und überlässt Ihnen die Updates, die Neustarts, die Zertifikate und die Rufbereitschaft. Das ist erheblich günstiger und tatsächlich mehr Arbeit. Wenn Sie diese Arbeit nicht wollen, ist eine Managed-Plattform die ehrliche Antwort, und wir verweisen lieber darauf, als eine Maschine zu verkaufen, die am Ende verwaist mit einem ungepatchten, aus dem Internet erreichbaren Daemon dasteht. Zwei kleinere Teile desselben Rats: Setzen Sie für jeden Container ein Speicherlimit, damit ein fehlerhafter Container stirbt statt Ihrer Datenbank, und greifen Sie auf einer einzelnen Maschine nicht zu Kubernetes: Ein Orchestrator ohne etwas zu verteilen ist nur Komplexität.

Fragen

Was Kunden vor dem Kauf fragen.

Wie viel RAM verbraucht Docker selbst?
Sehr wenig, und genau das überrascht viele. Der Docker-Daemon belegt etwa 100 MB, und jeder Container danach ist nur ein Prozess: kein zweites Betriebssystem, kein zweiter Kernel, keine Fixkosten pro Container wie bei einer virtuellen Maschine. Die Rechnung ist also einfach: der Arbeitsspeicher Ihrer Maschine, abzüglich etwa 300 MB für das Betriebssystem und 100 MB für den Daemon, aufgeteilt auf die Prozesse, die Sie tatsächlich ausführen.
Wie viele Container kann ein kleiner VPS betreiben?
Mehr, als die Frage vermuten lässt, denn „ein Container“ ist keine Größeneinheit. Zehn Reverse Proxys und ein Elasticsearch sind völlig unterschiedliche Maschinen. Auf BD-8 (8 GB für $12.90) kommen ein Proxy, eine Web-App, eine Datenbank und ein Cache zusammen auf etwa 515 MB, womit der Großteil der Maschine frei bleibt. Die Tabelle oben übernimmt die Rechnung; führen Sie `docker stats` auf Ihrem eigenen Stack aus, um die Zahl zu erhalten, die tatsächlich für Sie gilt.
Ist ein VPS günstiger als eine Managed-Container-Plattform?
Beim Preis fast immer, und das ist nicht der ganze Vergleich. Eine Plattform verlangt mehr, weil sie den Betrieb übernimmt: Updates, Neustarts, Zertifikate, die Rufbereitschaft um 3 Uhr nachts. Ein VPS gibt Ihnen root und überlässt all das wieder Ihnen. Wenn Sie Container betreiben möchten und bereit sind, diese Arbeit zu übernehmen, ist ein VPS erheblich günstiger. Wenn nicht, bezahlen Sie die Plattform: Wir sagen das lieber offen, als Ihnen eine Maschine zu verkaufen, die am Ende verwaist mit einem ungepatchten Daemon dasteht.
Brauche ich Docker Swarm oder Kubernetes?
Auf einer einzelnen Maschine nicht. Compose reicht für einen Stack auf einem einzigen Server und ist die richtige Antwort für die überwältigende Mehrheit selbst gehosteter Setups: Die Aufgabe eines Orchestrators ist die Verteilung über mehrere Maschinen, und bei einer Maschine gibt es nichts zu verteilen. Greifen Sie zu Kubernetes, wenn Sie wirklich mehrere Maschinen und einen Grund für die Komplexität haben, nicht vorher.
Was geht zuerst aus: Arbeitsspeicher, CPU oder Speicherplatz?
Meist der Arbeitsspeicher, und das passiert lautstark: Der Out-of-Memory-Killer des Kernels wählt einen Prozess aus und beendet ihn, was wie ein rätselhaft neu startender Container aussieht. Setzen Sie Speicherlimits pro Container, damit der fehlerhafte stirbt und nicht Ihre Datenbank. Speicherplatz ist die zweite Überraschung: Images, Volumes und Logs sammeln sich unbemerkt an, daher gehört `docker system prune` in einen wöchentlichen Cronjob, lange bevor es dringend wird.
Welches Image sollte der Host verwenden?
Jedes unserer Images: Jeder Tarif unterstützt jedes Image, und Docker läuft auf allen. Ubuntu LTS ist die sinnvolle Standardwahl, wenn Sie keine Präferenz haben, einfach weil die meiste Container-Dokumentation davon ausgeht. Die Distribution spielt eine viel geringere Rolle, als man meint: Die Container bringen ihr eigenes Userland mit, der Host ist also kaum mehr als ein Kernel und ein Daemon.