Portfolio · Linux et Docker

Florian Vasseur

Technicien Systèmes, Réseaux et Sécurité, en route vers l'administration systèmes, réseaux et bases de données.

Le fil rouge

  1. Étape 1Un serveur Linux de test, isoléHyper-V, Ubuntu Server
  2. Étape 2Docker installé et sécuriséDépôts officiels, droits utilisateur
  3. Étape 3Un tableau de bord unique, en conteneurHomarr, rôles et accès
  4. Étape 4Une supervision maison en BashCPU, RAM, disque

Les travaux

Étape 1Linux

Un environnement de test Linux, isolé de la production

Contexte

Je devais comparer plusieurs solutions de tableaux de bord. Installer des logiciels à l'essai sur la production expose à des conflits, à des failles et à une baisse de performance. Il fallait un espace dédié, stable et facile à refaire.

Pourquoi un environnement isolé, et pas les serveurs de production ?

  • Protéger la production. Installer des logiciels à l'essai peut provoquer des conflits, ouvrir des failles de sécurité ou ralentir les serveurs que les équipes utilisent tous les jours.
  • Valider avant de déployer. En entreprise, une solution se teste d'abord dans un espace séparé. On ne la met en production qu'une fois qu'elle a fait ses preuves.
  • Pouvoir se tromper sans conséquence. Sur une VM, un snapshot permet de revenir en arrière en quelques minutes. Sur un serveur de production, une erreur touche directement les utilisateurs.
  • Un environnement reproductible. La même VM peut être recréée pour tester plusieurs solutions dans les mêmes conditions.

Ce que j'ai fait

  • Création d'une machine virtuelle sous Hyper-V, déjà utilisé dans l'entreprise, donc sans nouvel outil à intégrer.
  • Ressources volontairement modestes pour pouvoir reproduire la VM sur n'importe quel poste.
  • Installation d'Ubuntu Server sur la VM.
  • Réseau en Default Switch d'Hyper-V : l'accès à Internet suffit aux installations, et la VM reste coupée du réseau interne.

La machine

Hyperviseur
Hyper-V
Mémoire
4 Go de RAM
Stockage
20 Go
Système
Ubuntu Server
Réseau
Default Switch
Contrôle
ping vers le réseau interne : aucune réponse

Résultat. Une base saine pour installer Docker et tester les tableaux de bord, avec moins de risques pendant les essais.

Étape 2Docker

Installer Docker proprement sur la machine Linux

Contexte

Installer chaque application directement sur le système crée des conflits de dépendances et complique la maintenance. La DSI a retenu Docker pour isoler chaque application dans un environnement dédié et reproductible.

Ce que j'ai fait

  • Mise à jour des paquets, puis installation de Docker depuis les dépôts officiels de Docker Inc. pour avoir une version stable et suivie.
  • Vérification du service, puis d'un conteneur de test. Cela valide le moteur, le téléchargement depuis Docker Hub et l'exécution.
  • Ajout de l'utilisateur courant au groupe docker, pour travailler sans compte administrateur.
  • Snapshot de la VM avant toute modification importante, pour revenir en arrière rapidement.
Capture du terminal : sortie de la commande docker run hello-world, message « Hello from Docker! », puis docker images hello-world
Capture du mémoire : test docker run hello-world réussi, l'image est bien téléchargée depuis Docker Hub.

Installer Docker (Ubuntu Server)

# 1. mettre à jour le système : évite les conflits de versions
$ sudo apt update && sudo apt upgrade -y

# 2. ajouter la clé et le dépôt officiels de Docker :
#    version stable, mises à jour de sécurité suivies
$ sudo apt install -y ca-certificates curl
$ sudo install -m 0755 -d /etc/apt/keyrings
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
    -o /etc/apt/keyrings/docker.asc
$ echo "deb [signed-by=/etc/apt/keyrings/docker.asc] \
    https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
    | sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt update

# 3. installer le moteur Docker et ses outils (dont Compose)
$ sudo apt install -y docker-ce docker-ce-cli containerd.io \
    docker-buildx-plugin docker-compose-plugin

# 4. vérifier que le service tourne
$ systemctl status docker

# 5. tester : télécharge une image et lance un conteneur
$ sudo docker run hello-world

# 6. travailler sans root (se reconnecter ensuite)
$ sudo usermod -aG docker $USER

À quoi ça sert

  • Mise à jour + dépôt officiel : on installe une version récente, signée et maintenue, plutôt qu'un paquet ancien de la distribution.
  • docker-ce : le moteur qui crée et exécute les conteneurs. docker-compose-plugin : décrit une application dans un fichier YAML (utilisé pour Homarr).
  • hello-world : valide d'un coup le moteur, le téléchargement depuis Docker Hub et l'exécution.
  • Groupe docker : évite d'utiliser root à chaque commande, ce qui limite les risques.

Résultat. Des déploiements plus souples et moins de conflits logiciels. Par rapport à une VM complète, un conteneur consomme moins de ressources, se lance plus vite et se déplace plus facilement.

Étape 3Docker

Un tableau de bord unique pour les outils de l'équipe, déployé avec Docker

Contexte

Les outils de supervision, de logs et les applications internes s'ouvraient par des adresses ou des favoris propres à chacun. Résultat : du temps perdu, aucune centralisation, des nouveaux arrivants perdus et aucune gestion commune des droits.

Ce que j'ai fait

  • Tableau comparatif de quatre solutions, avec des critères pondérés définis avec la DSI.
  • Choix de Homarr, déployé dans un conteneur sur la VM Linux.
  • Compte administrateur, trois rôles (technicien support, développeur, administrateur) et un tableau de bord par service.
  • Intégration de Zabbix, de Graylog et des applications métier.
  • Droits au plus juste : un technicien accède à la supervision et aux logs, un développeur n'accède pas aux outils internes du support. Tests de validation sur les accès.
Documentation Homarr : fichier docker-compose.yml avec le service homarr, l'image, les volumes et le port 7575
Capture du mémoire : fichier docker-compose.yml de Homarr (clé de chiffrement masquée).

Rôles et accès

Technicien support
supervision, logs
Développeur
sans accès aux outils internes du support
Administrateur
gestion des comptes et des rôles

Résultat. Un gain de temps estimé à environ 20 % pour accéder aux différentes plateformes.

Ce que j'en retiens. Le tableau comparatif rend le choix objectif et facile à justifier. Docker isole l'application du système hôte, ce qui simplifie la maintenance.

Comparatif des solutions étudiées. Le poids indique l'importance du critère.
CritèreHomarrOrganizrHomerHeimdallPoids
Gestion des utilisateursOuiOuiNonNonÉlevé
Rôles et droitsOuiPartielNonNonÉlevé
Intégration par adresseOuiOuiOuiOuiMoyen
Compatibilité DockerOuiOuiOuiOuiÉlevé
Facilité d'installationBonneMoyenneBonneBonneMoyen
ErgonomieTrès bonneBonneBasiqueBonneMoyen
Documentation officielleComplèteLimitéeBonneMoyenneFaible

Étape 4Linux

Superviser le serveur avec un script Bash

Contexte

Le serveur Linux hébergeait des conteneurs et des outils de test, sans aucune supervision. Une surcharge du processeur ou de la mémoire serait passée inaperçue, sans historique pour comprendre après coup. Personne ne me l'avait demandé : j'ai proposé et mis en place la solution moi-même.

Ce que j'ai fait

  • Choix d'un script Bash plutôt que de Zabbix ou de Prometheus avec Grafana, trop lourds pour un simple environnement de test.
  • Mesure du processeur à partir du noyau, de la mémoire vive avec free, du disque avec df.
  • Exécution en boucle toutes les 5 secondes, sortie écrite dans un fichier de logs horodaté pour garder l'historique.
  • Test avec une charge processeur simulée et des applications gourmandes en mémoire : les variations ont bien été enregistrées.

Ce que le script lit

# processeur
/proc/stat

# mémoire vive
$ free

# espace disque
$ df

# test de charge
$ stress

Résultat. Un suivi simple du CPU, de la RAM et du disque, avec un historique exploitable, sans rien installer de plus.

Ce que j'en retiens. Le script n'a ni interface graphique ni alertes, et il se lit à la main. En production, Zabbix ou Prometheus avec Grafana seraient plus adaptés. Prendre l'initiative a renforcé la fiabilité du serveur.

RéutilisationDocker

Docker au service d'un autre projet : l'accueil des stagiaires

Pour le programme d'accueil et de formation des stagiaires, j'ai mis l'environnement d'exercices de supervision dans un conteneur. Chaque promotion démarre dans des conditions identiques, et l'environnement se supprime puis se reconstruit en quelques minutes à la fin.

  • Aucune exécution en root.
  • Volumes montés limités au strict nécessaire pour les exercices.
  • Procédure de déploiement standardisée, avec les mêmes paramètres de sécurité et les mêmes jeux de données à chaque fois.

Côté Linux

  • Hyper-V
  • Ubuntu Server
  • apt
  • systemctl
  • Scripting Bash
  • /proc, free, df
  • Snapshots
  • Isolation réseau

Côté Docker

  • Installation depuis les dépôts officiels
  • Docker Hub
  • Déploiement d'application (Homarr)
  • Gestion des droits
  • Rôles et accès
  • Environnement reproductible

Me contacter

florian.vasseur1@laposte.net

Les noms de machines, adresses et clients ont été retirés de ce portfolio.