Contrôlez plusieurs instances Docker depuis une seule interface

Contrôlez plusieurs instances Docker depuis une seule interface

Certains utilisent directement la ligne de commande (aussi appelée CLI) tandis que d'autres préfèrent une interface graphique comme Portainer pour gérer les stacks et conteneurs de Docker.
Pour ma part, je créer les stacks en CLI avec docker-compose et n'utilise Portainer que ponctuellement quand je ne suis pas chez moi pour vérifier l'état ou relancer un conteneur, ou bien encore consulter des logs.

Si vous avez plusieurs machines qui servent à héberger vos conteneurs, sachez qu'il est possible de contrôler Docker sur celles-ci depuis une interface unique, sans avoir besoin de déployer Portainer sur chacune.

Il faudra bien entendu déployer un composant sur chaque machine, mais uniquement un conteneur Portainer Agent, plus léger.

Voici la commande à utiliser pour lancer cet agent :

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 portainer/agent

Ou avec une stack docker compose :

version: '2'

services:
  portainer-agent:
    container_name: portainer_agent
    image: portainer/agent
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    labels:
      - com.centurylinklabs.watchtower.enable=true
    ports:
      - 9001:9001
    restart: always
Attention ! Sur les NAS Synology, il faut remplacer le chemin des volumes :

/var/lib/docker/volumes devient /volume1/@docker/volumes.

(Attention, Docker peut être installé sur un autre volume sur votre installation, vous devez adapter le chemin.)

Passons maintenant à la configuration dans Portainer. Rendez-vous dans "Environments" et cliquez sur "Add Environment".
Par défaut, c'est l'environnement "Portainer agent" qui est sélectionné. Donnez un nom à l'environnement que vous souhaitez ajouter, renseignez l'adresse IP de l'hôte et le port de l'agent Portainer sous la forme "IP.HOTE.DOCKER:PORT". Cliquez enfin sur "Add Environment" en bas de page pour sauvegarder.

En revenant sur la page d'accueil ("Home") de Portainer, vous retrouverez vos 2 environnements, l'hôte local ainsi que l'hôte distant que vous venez d'ajouter.
Les mêmes détails sont donnés, le nombre de stacks, de conteneurs démarrés et arrêtés, de volumes et d'images. Vous noterez aussi qu'il est fait mention de la présence d'un agent à côté de la version de Docker.

Cette méthode avec l'agent Portainer fonctionne pour connecter un environnement Docker accessible sur le même réseau, ou pour lequel vous pouvez rediriger un port (9001 par défaut) pour qu'il se connecte de lui-même à votre instance Portainer.
Sachez qu'il est également possible de connecter un environnement Docker pour lequel vous ne pouvez pas y accéder directement, avec un Edge Agent. Vous trouverez sur la page suivante la procédure officielle pour le configurer.

Dans Portainer, vous retrouverez toutes les stacks existantes sur votre environnement Docker.

Attention, il y a une limitation avec les stacks dans Portainer, certaines apparaîtront avec un contrôle possible "Limited". Il s'agit des stacks créées avec la commande docker-compose ou bien depuis une autre instance de Portainer. Pour ces stacks, vous pourrez visualiser les conteneurs, les arrêter / démarrer / relancer, mais vous ne pourrez pas modifier la stack en elle-même.

Pour avoir le contrôle total sur une stack, celle-ci doit avoir été créée depuis l'instance Portainer qui y accède.

Toutes les fonctions de gestion de l'environnement Docker seront possible depuis cette instance Portainer, que ce soit le téléchargement d'images, la création ou suppression de volumes ou réseaux, la gestion des stacks et des conteneurs.


Conclusion

Cet article rapide vous a montré comment contrôler plusieurs instances Docker depuis une interface Portainer unique et j'espère qu'il vous sera utile.

Si vous avez des questions sur cet article, sur l'utilisation de Portainer ou Docker, n'hésitez pas à laisser un commentaire ou venir échanger avec nous sur notre groupe Telegram.