Aller au contenu
Weobia, Agence Internet et Digitale 360°

Hébergement Docker

Vos conteneurs tournent chez nous, en France

Vous livrez des images, nous les faisons tourner. Docker en mode Swarm sur notre infrastructure nantaise, avec la supervision et l’exploitation qui vont avec — vous gardez votre chaîne de build, nous prenons la production.

  • Docker en mode Swarm, orchestré sur notre cluster
  • Reverse proxy et routage des services par Traefik
  • Déploiement outillé : Ansible, Jenkins, Rundeck
  • Données et conteneurs hébergés en France

Le principe

Le conteneur règle le déploiement, pas la production

Ce que le conteneur résout

Une image contient l’application et tout ce dont elle a besoin pour tourner. Elle se déplace d’un poste de développement à la production sans que l’environnement change — c’est l’essentiel de ce que Docker apporte, et c’est beaucoup : la moitié des incidents de mise en production venait de là.

Ce que le conteneur ne résout pas, c’est le reste : où tourne l’image, ce qui la redémarre quand elle s’arrête, comment le trafic arrive jusqu’à elle, où sont les données qu’elle écrit, et qui regarde tout cela à trois heures du matin. C’est cette partie que nous prenons.

Swarm plutôt qu’une usine à gaz

Nous exploitons Docker en mode Swarm. C’est l’orchestrateur intégré à Docker : il répartit les conteneurs sur plusieurs machines, les redémarre ailleurs si un nœud tombe, et gère les montées de version sans coupure.

Il fait moins de choses qu’un orchestrateur plus lourd, et c’est précisément son intérêt pour la majorité des projets : moins de pièces mobiles, moins de configuration, moins de choses à comprendre le jour où quelque chose casse. Si votre besoin dépasse ce cadre, c’est un travail d’architecture — pas un hébergement sur catalogue.

Comment un service tourne réellement

En Swarm, vous ne lancez pas un conteneur : vous déclarez un service, et le nombre de réplicas que vous voulez en voir tourner. L’orchestrateur se charge du reste, et c’est ce « reste » qui fait le travail d’exploitation :

  • Si un conteneur s’arrête ou cesse de répondre à son health check, il est recréé — sur le même nœud ou sur un autre.
  • Si un nœud entier disparaît, ses conteneurs sont replanifiés sur les nœuds restants, à condition que le cluster ait la capacité de les accueillir.
  • Une nouvelle version se déploie en mise à jour progressive : les réplicas sont remplacés un par un, et le déploiement s’arrête tout seul si les nouveaux ne passent pas leur contrôle de santé. C’est ce qui permet de livrer sans fenêtre de maintenance, et de revenir en arrière sans drame.
  • Le réseau overlay relie les conteneurs entre nœuds : vos services se parlent par leur nom, sans que vous ayez à connaître l’adresse de la machine qui les héberge.

Les mots de passe, clés d’API et certificats passent par les secrets de Swarm : ils sont montés dans le conteneur au démarrage, et ne se retrouvent ni dans l’image, ni dans une variable d’environnement lisible par tout le monde.

Ce qui compte, c’est l’état

Un conteneur est jetable ; vos données ne le sont pas. La question qu’il faut trancher avant tout déploiement est où vit l’état : la base de données, les fichiers déposés par les utilisateurs, les sessions.

Nous sortons ces éléments des conteneurs — bases répliquées, stockage partagé, caches en mémoire — pour qu’un conteneur puisse être détruit et recréé sans que personne s’en aperçoive. C’est ce qui rend une infrastructure conteneurisée réellement robuste, et c’est ce qu’on omet le plus souvent.

Les volumes, le piège classique

Le cas qui revient : une application écrit ses fichiers dans un volume local, tout fonctionne, puis le conteneur est replanifié sur un autre nœud — et les fichiers ne suivent pas. L’application ne plante pas ; elle perd simplement ce qu’elle avait écrit, ce qui est bien pire à diagnostiquer.

Un volume local n’a de sens que pour du cache jetable. Dès que la donnée doit survivre au déplacement d’un conteneur, elle va sur du stockage partagé — NFS, GlusterFS, iSCSI ou SAN selon le volume et les performances attendues — accessible depuis n’importe quel nœud du cluster.

C’est le premier point que nous regardons dans une pile qu’on nous confie, avant même de parler de dimensionnement.

Voir ce qui se passe

Un conteneur qui redémarre en boucle sans qu’on s’en aperçoive est un incident en préparation. Les journaux sortent des conteneurs — ils disparaissent avec eux, sinon — et les métriques du cluster sont surveillées comme celles de nos autres serveurs : en cas d’alerte, nos outils corrigent automatiquement et préviennent un administrateur d’astreinte.

Le socle

Ce que nous exploitons

  • Docker en mode Swarm

    L’orchestrateur intégré à Docker : répartition des conteneurs sur plusieurs machines, redémarrage ailleurs si un nœud tombe, montée de version sans coupure.

  • Routage par Traefik

    Le trafic est dirigé vers le bon service, avec les certificats gérés automatiquement. HAProxy ou Nginx quand le contexte s’y prête mieux.

  • Déploiement outillé

    Ansible pour la configuration des machines, Jenkins et Rundeck pour enchaîner les opérations. Votre chaîne de build reste la vôtre ; nous prenons la mise en production.

  • L’état hors des conteneurs

    MariaDB avec Galera, MongoDB en replica set, PostgreSQL, Redis. Les données vivent en dehors des conteneurs, pour que ceux-ci restent jetables.

  • Supervision et astreinte

    Les mêmes que sur nos serveurs : surveillance des métriques, correction automatique sur alerte, administrateur d’astreinte si le problème est plus grave.

  • Hébergé en France

    Sur notre infrastructure nantaise, matériel en propre, données soumises au seul droit français et européen.

La mise en production

Le trajet d’une image jusqu’au service

  1. Vous publiez une image tag de version, pas « latest »
  2. Le service est mis à jour réplicas remplacés un par un
  3. Chaque réplica est contrôlé health check avant bascule
  4. Le trafic suit Traefik route vers les conteneurs sains

Si un nouveau réplica ne passe pas son contrôle, la mise à jour s’arrête d’elle-même et les anciens continuent de servir. C’est la raison pour laquelle nous demandons un tag de version explicite : avec latest, plus personne ne sait ce qui tourne, et revenir en arrière devient une enquête.

Ce que nous regardons dans vos images

Rien d’ésotérique, mais ce sont les points qui font la différence entre une pile qui s’exploite et une pile qu’on redémarre à la main :

  • Un tag de version explicite, pour savoir ce qui tourne et pouvoir y revenir.
  • Un contrôle de santé qui dit vraiment si l’application répond, et pas seulement si le processus existe.
  • La configuration hors de l’image : variables d’environnement pour ce qui n’est pas sensible, secrets Swarm pour le reste.
  • Un processus qui s’arrête proprement quand on le lui demande, pour que le remplacement d’un réplica ne coupe pas une requête en cours.
  • Des journaux sur la sortie standard, pas dans un fichier interne au conteneur qui disparaîtra avec lui.

Si votre image ne coche pas encore ces cases, ce n’est pas bloquant : cela fait partie de ce que nous reprenons avec vous à la mise en production.

Questions fréquentes

Docker : vos questions

Une autre question ? Le support répond directement, sans intermédiaire, de 9h à 12h et de 14h à 17h.

02 40 18 01 68

Nous écrire →

Dois-je livrer des images, ou du code ?

Des images : c’est le principe même du conteneur, et c’est ce qui garantit que ce qui tourne en production est ce que vous avez testé. Votre chaîne de construction reste la vôtre. Si vous n’en avez pas encore, c’est un point à traiter avant l’hébergement, pas après.

Où vont les données de mon application ?

Hors des conteneurs, et c’est la question à trancher en premier. Base de données, fichiers déposés, sessions : tout ce qui doit survivre à la destruction d’un conteneur est sorti sur des services dédiés — bases répliquées, stockage partagé, cache en mémoire. Un conteneur qui garde son état n’est pas jetable, et perd l’essentiel de son intérêt.

Et si mon application est déjà sur un serveur classique ?

La conteneurisation n’est pas une fin en soi. Une application stable sur un serveur bien tenu n’a pas à changer de forme pour le principe. Le conteneur se justifie quand vous déployez souvent, quand plusieurs environnements doivent être identiques, ou quand plusieurs applications doivent cohabiter sans se marcher dessus.

Puis-je déployer sans coupure ?

Oui, c’est le fonctionnement normal : les réplicas d’un service sont remplacés un par un, et le déploiement s’interrompt de lui-même si les nouveaux ne passent pas leur contrôle de santé. Deux conditions côté application : plusieurs réplicas, et un processus qui s’arrête proprement pour ne pas couper une requête en cours.

Combien de nœuds faut-il ?

Un seul suffit à faire tourner des conteneurs, mais il ne survit à rien : si la machine tombe, tout tombe. La bascule automatique suppose au moins un second nœud capable d’accueillir les conteneurs du premier — et donc une capacité laissée libre exprès. C’est un arbitrage de coût, que nous posons dès le dimensionnement.

Proposez-vous Kubernetes ?

Nous exploitons Docker en mode Swarm, qui couvre la majorité des besoins avec beaucoup moins de pièces mobiles. Si votre contexte impose un autre orchestrateur, la question relève de l’étude d’architecture plutôt que d’un hébergement sur catalogue — parlons-en.

Des images à faire tourner quelque part ?

Dites-nous ce que contient votre pile et à quelle fréquence vous déployez. Nous vous dirons ce que l’exploitation demande.

Demande de rappel

Nous vous rappelons

Laissez un numéro et un créneau. C'est un conseiller qui appelle, pas un centre d'appels — et si vous préférez composer vous-même, le 02 40 18 01 68 répond aux heures ouvrées.

Numéro français, fixe ou mobile. Il se met en forme tout seul.