Simuler des nodes Docker pour tester Portainer avec Docker-in-Docker

Quand on veut tester des orchestrations Docker ou des outils comme Portainer, créer plusieurs machines physiques ou VM peut vite devenir lourd. Heureusement, il existe une méthode simple pour simuler plusieurs nœuds Docker en local grâce à Docker-in-Docker (DinD). Voici comment j’ai mis ça en place.

1. Préparer le cluster simulé avec Docker Compose

J’ai utilisé Docker Compose pour lancer deux nœuds Docker simulés. Voici mon fichier docker-compose.yml :

version: '3.8'

services:
  node1:
    image: docker:dind
    privileged: true
    networks:
      - nodes-network
    ports:
      - 9001:9001

  node2:
    image: docker:dind
    privileged: true
    networks:
      - nodes-network
    ports:
      - 9002:9001
      
networks:
  nodes-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.16.0.0/24
  • docker:dind : une image Docker capable de lancer un daemon Docker à l’intérieur d’un conteneur.
  • privileged: true : nécessaire pour que Docker fonctionne à l’intérieur du conteneur.
  • Ports et réseau : chaque nœud est accessible via un port différent et tous sont sur le même réseau interne.

Ensuite, je lance les conteneurs

2. Ajouter l’agent Portainer sur chaque nœud

Pour que Portainer puisse gérer ces nœuds simulés, j’ai déployé l’agent Portainer sur chacun. Par exemple pour node1 :

docker run -d \
  -p 9001:9001 \
  --name portainer_agent \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/docker/volumes:/var/lib/docker/volumes \
  -v /:/host \
  portainer/agent:2.33.2

Pour node2, idem !

  • Volumes montés : permettent à l’agent de contrôler Docker et d’accéder aux volumes pour Portainer.
  • Port : correspond au port utilisé pour communiquer avec Portainer.

3. Ajouter les nœuds dans Portainer

Dans Portainer :

  1. Aller dans EnvironnementsAjouter un environnement.
  2. Sélectionner Agent comme type.
  3. Renseigner l’adresse du nœud simulé (http://<IP_NODE>:9001 pour node1, http://<IP_NODE>:9002 pour node2).

Et voilà ! Vos deux nœuds simulés apparaissent dans Portainer, prêts à tester des déploiements, stacks et autres configurations.

4. Conclusion

Cette approche avec Docker-in-Docker est idéale pour :

  • Tester des environnements multi-nœuds sans créer plusieurs VM.
  • Faire des expérimentations avec Portainer Agent.
  • Prototyper des orchestrations et automatisations Docker.

C’est simple, rapide et 100% local. Parfait pour un labo Docker personnel ou des tests avant déploiement en production.