
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 :
- Aller dans Environnements → Ajouter un environnement.
- Sélectionner Agent comme type.
- Renseigner l’adresse du nœud simulé (
http://<IP_NODE>:9001pour node1,http://<IP_NODE>:9002pour 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.