Dockge
Les informations de bases :
- Prononciation en Français : Dokjé
- Slogan : Self-hosted - Docker compose.yaml - Stack-oriented Manager
- Source : https://dockge.kuma.pet/
- Type : Application sous Docker
- Langage de Développement : Node.JS et Reactive
- Ressource Nécessaire : 1 serveur, 512Mb Ram, 1cpu
- Développeur : Louis Lam / https://github.com/louislam
- Dépot du Projet : https://github.com/louislam/dockge
- Dispose d'une fonction d'Agents : Oui
- Dispose d'une authentification : Oui
L'idée de base :
Dockge permet d'administrer et de gérer une installation Docker avec Compose et de rester organisé pour le stockage des Composes et de leur fichier .env et ce, sous forme de répertoires auto managés mais récupérables manuellement sans soucis (pas de Lock-In comme Portainer ou CapRover).
Dockge n'est pas aussi puissant que Portainer ou CapRover, mais suffit amplement aux fonctions basiques de Docker. Dockge inclus :
- Un contrôle d'agents distants (comprenez qu'une Instance Dockge peut contrôler d'autres instances, ce qui est très intéressant si votre infrastructure a plusieurs serveurs ou machines virtuelles. Aussi utile dans le cadre de serveurs de développement sous forme de VM.)
- Des accès aux terminaux :
- Des conténaires avec BaSH et SH
- Du conténaire Dockge, équipé des commandes
docker
,ls
etcmd
avec une sécurité d'éxecution des commandes.
Contextes intéressants pour Dockge :
- Serveur de Sandboxing (Formation ou Développement), utile pour faire des bac a sables pour apprendre Linux, ou tester des applications.
- Serveur de Production, ca peut faire peur au premier abord, mais Dockge simplifie fortement la gestion des applications, donc oui, je conseille ce logiciel pour la Production.
Il est aussi a remarquer qu'il est possible d'avoir une instance Dockge sans conténaires ni gestion (donc composes etc...) qui servira uniquement pour le contrôle des agents distants. J'ai appellé dans mon infrastructure, cela un Contrôleur Dockge.
Vous pouvez :
- Utiliser directement l'Agent (non conseillé)
- Utiliser un Contrôleur Dockge (conseillé) pour contrôler les Agents, y compris l'agent local.
Le QA :
Q : Pourquoi un Contrôleur ?
A : L'usage d'une Passerelle entre le Web et l'Agent est une bonne idée pour maintenir un semblant d'isolation. Cela limite la surface d'attaque potentielle.
Q : Le Contrôleur peut-il avoir son propre serveur ?
A : Oui, une VM, un conténaire LXC ou un Hôte Physique peut accueillir un Contrôleur Dockge.
Q : Quelle méthode conseille tu pour la position du Contrôleur Dockge vis-a-vis du premier agent ?
A : J'ai choisi d'avoir Contrôleur et Agent sur la Production. Le Contrôleur se connecte sur l'Agent et cela fonctionne très bien. L'agent reste isolé.
Déployer Dockge
Pour une instance dite "Agent"
services:
dockge:
image: louislam/dockge:1
restart: unless-stopped
container_name: dockge-agent
ports:
- 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
- /opt/stacks:/opt/stacks # Répertoire des Composes, par défaut sur opt stacks, mais peut être modifié.
environment:
# Tell Dockge where to find the stacks
- DOCKGE_STACKS_DIR=/opt/stacks
Pour une instance dite "Controller"
Ne jamais tenter de garder des composes sur "Actuel" ou "Local" sur cette version. Au prochain redémarrage du conténaire, les composes sur ce conténaire seront perdus !! N'oubliez pas que ce modèle n'est pas fait pour gérer l'instance locale !
{.is-warning}
services:
dockge:
image: louislam/dockge:1
restart: unless-stopped
container_name: dockge-controller
ports:
- 5000:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # Désactiver le contrôle local de Docker
- ./data:/app/data
environment:
# Tell Dockge where to find the stacks
- DOCKGE_STACKS_DIR=/opt/stacks