Aller au contenu

Solutions · Conteneurs

De quel serveur Docker a-t-il besoin ?

Les conteneurs sont des processus partageant un même noyau, pas de petites machines virtuelles : le démon occupe environ 100 MB et tout le reste correspond simplement à vos propres processus. La réponse est donc plus modeste que la question ne le laisse penser : un proxy, une application, une base de données et un cache totalisent environ 515 MB, ce qui tient largement sur BD-8 à $12.90.

Ce qu’occupe réellement un conteneur

Des fourchettes, pas des benchmarks

Votre image, votre configuration et votre trafic font varier ces chiffres plus qu’aucun tableau. Lancez docker stats sur votre propre pile : c’est le seul chiffre qui s’applique à vous.

Mémoire résidente typique des charges de travail courantes en conteneur
ConteneurMémoire typiqueTient sur BD-8 (8 GB)
Un reverse proxynginx, Caddy, Traefik15–60 MB129 dans le haut de la fourchette
Une petite application webNode, Python, Go : un seul processus60–200 MB38 dans le haut de la fourchette
PostgreSQL ou MySQLpetit jeu de données, pool par défaut200–500 MB15 dans le haut de la fourchette
Redisen cache, limité par maxmemory20–200 MB38 dans le haut de la fourchette
Un service JVMJava, Kotlin, Elasticsearch500–2000 MB3 dans le haut de la fourchette

Le calcul

Ce que contient chaque offre

La mémoire, moins 300 MB pour le système d’exploitation et 100 MB pour le démon, divisée par ce qu’occupent vos conteneurs. La colonne du milieu correspond à une pile complète (proxy, application, base de données, cache) d’environ 515 MB.

Capacité en conteneurs et en piles par offre, avec disque et prix en temps réel
OffreRAMPiles complètesPetites applicationsDisquePrixDéployer
VPS-11 GB1325 GB$9.90Déployer
BD-88 GB1538100 GB$12.90Déployer
BD-1212 GB2359200 GB$17.90Déployer
BD-2424 GB46120300 GB$31.90Déployer

Le disque est la seconde surprise, celle qu’on découvre plus tard : images, volumes et journaux s’accumulent discrètement. Placez docker system prune dans un cron hebdomadaire avant que cela devienne urgent, pas après.

Contre nous-mêmes

Quand ne pas acheter ceci

Une plateforme de conteneurs infogérée coûte plus cher parce qu’elle se charge de l’exploitation. C’est un vrai service qui mérite d’être acheté.

Un VPS vous donne l’accès root et vous confie les mises à jour, les redémarrages, les certificats et les astreintes. C’est nettement moins cher et réellement plus de travail. Si vous ne voulez pas de ce travail, une plateforme infogérée est la réponse honnête, et nous préférons vous l’indiquer plutôt que vendre une machine qui finira abandonnée avec un démon non corrigé exposé à Internet. Deux conseils plus modestes dans le même esprit : fixez une limite de mémoire pour chaque conteneur, afin que celui qui dysfonctionne s’arrête à la place de votre base de données, et n’utilisez pas Kubernetes sur une seule machine : un orchestrateur sans rien à planifier n’est que de la complexité.

Questions

Les questions posées avant l’achat.

Combien de RAM Docker utilise-t-il lui-même ?
Très peu, et c’est ce qui surprend. Le démon Docker occupe environ 100 MB et chaque conteneur n’est ensuite qu’un processus : pas de second système d’exploitation, pas de second noyau, pas de coût fixe par conteneur comme avec une machine virtuelle. Le calcul est donc simple : la mémoire de votre machine, moins environ 300 MB pour le système d’exploitation et 100 MB pour le démon, répartie entre les processus que vous faites réellement tourner.
Combien de conteneurs un petit VPS peut-il faire tourner ?
Plus que la question ne le suggère, car « un conteneur » n’est pas une unité de taille. Dix reverse proxies et un Elasticsearch représentent des machines radicalement différentes. Sur BD-8 (8 GB pour $12.90), un proxy, une application web, une base de données et un cache totalisent environ 515 MB, ce qui laisse libre la majeure partie de la machine. Le tableau ci-dessus fait la division ; lancez `docker stats` sur votre propre pile pour obtenir le chiffre qui s’applique réellement à vous.
Un VPS est-il moins cher qu’une plateforme de conteneurs infogérée ?
Presque toujours sur le prix, mais la comparaison ne s’arrête pas là. Une plateforme facture plus parce qu’elle se charge de l’exploitation : mises à jour, redémarrages, certificats, astreinte à 3 h du matin. Un VPS vous donne l’accès root et vous rend tout cela. Si vous voulez faire tourner des conteneurs et êtes prêt à assumer ce travail, un VPS est nettement moins cher. Sinon, payez la plateforme : nous préférons le dire plutôt que vous vendre une machine qui finira abandonnée avec un démon non corrigé.
Ai-je besoin de Docker Swarm ou de Kubernetes ?
Sur une seule machine, non. Compose suffit pour une pile hébergée sur un seul serveur, et c’est la bonne réponse pour l’immense majorité des installations auto-hébergées : le rôle d’un orchestrateur est de planifier sur plusieurs machines, et avec une seule machine, il n’y a rien à planifier. Passez à Kubernetes quand vous avez réellement plusieurs machines et une raison d’accepter la complexité, pas avant.
Qu’est-ce qui lâche en premier : la mémoire, le CPU ou le disque ?
La mémoire, en général, et la panne est bruyante : l’OOM killer du noyau choisit un processus et l’arrête, ce qui ressemble à un conteneur qui redémarre mystérieusement. Fixez des limites de mémoire par conteneur pour que ce soit celui qui dysfonctionne qui s’arrête, et non votre base de données. Le disque est la seconde surprise : images, volumes et journaux s’accumulent discrètement, donc `docker system prune` a sa place dans un cron hebdomadaire bien avant que cela devienne urgent.
Quelle image l’hôte doit-il utiliser ?
N’importe laquelle des nôtres : chaque offre accepte chaque image et Docker fonctionne sur toutes. Ubuntu LTS est le choix par défaut à retenir si vous n’avez pas d’avis, simplement parce que la plupart des documentations sur les conteneurs la supposent. La distribution compte bien moins qu’on ne le croit : les conteneurs apportent leur propre espace utilisateur, l’hôte n’est donc guère plus qu’un noyau et un démon.