Tuto : Comment déployer un conteneur Docker sur une VM Cloud

Tuto : Comment déployer un conteneur Docker sur une VM Cloud

Image by: Wolfgang Weiser

Prérequis et configuration initiale de la vm cloud

Selon une étude récente de Flexera, 92% des entreprises utilisent désormais des solutions cloud hybrides, avec une adoption massive des machines virtuelles pour le déploiement d’applications conteneurisées. Ce guide pratique vous accompagne pas-à-pas dans le déploiement Docker sur une VM cloud (AWS EC2 ou OVHcloud), en couvrant l’installation, la sécurisation et l’exploitation via Docker Compose.

Commencez par créer votre instance virtuelle. Pour AWS EC2, sélectionnez une instance Ubuntu 22.04 LTS (type t3.medium recommandé). Chez OVHcloud, optez pour une VM équivalente dans l’offre Public Cloud. Configurez les règles de sécurité initiales :

  • Autorisez le port SSH (22) depuis votre IP uniquement
  • Créez une paire de clés SSH pour l’authentification
  • Mettez à jour les paquets système : sudo apt update && sudo apt upgrade -y

Comparatif des configurations VM recommandées

Fournisseur Type d’instance CPU/RAM Stockage
AWS EC2 t3.medium 2 vCPU / 4 Go RAM 30 Go SSD
OVHcloud b2-15 4 vCPU / 15 Go RAM 100 Go SSD

Après connexion SSH, installez les dépendances système : sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release. Consultez notre guide d’optimisation cloud pour des configurations avancées.

Installation de docker engine sur linux

Docker Engine est le cœur de votre infrastructure conteneurisée. Suivez la procédure officielle pour une installation sécurisée :

  1. Ajoutez la clé GPG officielle :

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  2. Configurez le dépôt stable :

    echo « deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable » | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

  3. Installez Docker :

    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io

Vérifiez l’installation avec sudo docker run hello-world. Vous devriez voir le message « Hello from Docker! ». Pour éviter les commandes sudo systématiques, ajoutez votre utilisateur au groupe Docker : sudo usermod -aG docker $USER. Redémarrez la session SSH pour l’activation. Consultez la documentation officielle Docker pour les dernières mises à jour.

Configuration du pare-feu pour sécuriser les accès

Un pare-feu mal configuré est la première cause de failles de sécurité dans les déploiements cloud. Utilisez UFW (Uncomplicated Firewall) pour contrôler les accès :

Commencez par activer UFW : sudo ufw enable. Configurez ensuite les règles de base :

  • Autorisez SSH : sudo ufw allow 22/tcp
  • Ouvrez uniquement les ports nécessaires à votre application (ex : 80, 443)
  • Bloquez tout trafic entrant par défaut : sudo ufw default deny incoming

Règles de sécurité essentielles pour Docker

  1. Restreignez l’accès à l’API Docker : configurez /etc/docker/daemon.json avec {« hosts »: [« fd:// », « unix:///var/run/docker.sock »]}
  2. Ne publiez jamais le port 2375/TCP (API Docker non authentifiée) sur Internet
  3. Utilisez des réseaux Docker personnalisés pour isoler les conteneurs

Vérifiez votre configuration avec sudo ufw status verbose. Pour approfondir la sécurisation, notre guide sécurité Docker couvre les bonnes pratiques avancées.

Déploiement d’application avec docker compose

Docker Compose simplifie le déploiement d’applications multi-conteneurs. Installez-le via : sudo apt install docker-compose-plugin. Créez un fichier docker-compose.yml pour votre application. Exemple avec une stack WordPress :

version: ‘3.8’
services:
  db:
    image: mysql:8.0
    volumes:
      – db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: votre_mot_de_passe
  wordpress:
    image: wordpress:latest
    ports:
      – « 80:80 »
    depends_on:
      – db
volumes:
  db_data: {}

Lancez le déploiement avec docker compose up -d. Vérifiez l’état des conteneurs via docker compose ps. Pour une configuration HTTPS, ajoutez un reverse proxy avec Nginx officiel et des certificats Let’s Encrypt.

Surveillance et maintenance des conteneurs

Une fois votre application déployée, implémentez un suivi robuste. Utilisez ces commandes essentielles :

  • Visualisez les logs en temps réel : docker compose logs -f
  • Contrôlez la consommation ressources : docker stats
  • Listez les processus dans un conteneur : docker top <container_id>

Pour les mises à jour :

  1. Récupérez les nouvelles images : docker compose pull
  2. Redéployez les conteneurs : docker compose up -d
  3. Nettoyez les anciennes images : docker image prune -a

Automatisez les sauvegardes avec un cron job exportant les volumes : docker run --rm -v db_data:/volume -v /backups:/backup alpine tar cvf /backup/backup.tar /volume. Consultez l’historique Docker pour comprendre l’évolution des fonctionnalités.

Frequently asked questions

Quels ports dois-je absolument bloquer sur ma vm cloud ?

Bloquez systématiquement les ports sensibles : 2375/2376 (API Docker non sécurisée), 22 (limitez-le à votre IP), 3306 (MySQL) et 5432 (PostgreSQL). Autorisez uniquement les ports 80 (HTTP), 443 (HTTPS) et les ports spécifiques indispensables à votre application.

Comment mettre à jour une application sans interruption de service ?

Utilisez la stratégie de déploiement rolling update de Docker Compose : docker compose up -d --pull always. Ajoutez des directives healthcheck dans votre fichier Compose pour garantir la disponibilité durant les mises à jour. Testez toujours en pré-production d’abord.

AWS EC2 ou OVHcloud : lequel choisir pour docker ?

AWS EC2 offre une intégration native avec ECS/EKS et des outils avancés (CloudWatch, IAM). OVHcloud propose un meilleur rapport prix/performances pour les déploiements simples. Pour des workloads critiques, AWS est recommandé. Pour des projets européens soucieux du RGPD, OVHcloud a l’avantage.

Comment sécuriser l’accès root à docker ?

N’utilisez jamais Docker avec le compte root. Créez un utilisateur dédié avec sudo usermod -aG docker utilisateur. Activez l’authentification TLS pour l’API Docker et utilisez des outils comme Portainer pour une gestion sécurisée via interface web.

Conclusion

Ce guide vous a accompagné dans toutes les étapes critiques du déploiement Docker sur VM cloud : de la configuration initiale et l’installation sécurisée de Docker Engine, à la maîtrise de Docker Compose et la surveillance opérationnelle. En suivant ces bonnes pratiques, vous réduisez les risques tout en optimisant la gestion de vos applications conteneurisées.

La combinaison Docker + machines virtuelles cloud reste une solution idéale pour déployer rapidement des applications évolutives. Testez dès maintenant ces méthodes avec une application Docker simple avant de passer à des workloads de production. Partagez vos retours d’expérience en commentaires !