Aller au contenu principal

Docker : conteneurs et images

· 4 minutes de lecture

Une image Docker est un artefact statique. Un conteneur est une image en cours d'exécution. Cette distinction est simple mais fondamentale : on distribue des images, on exécute des conteneurs. Comprendre leur structure et leur cycle de vie permet de diagnostiquer rapidement les problèmes et de concevoir des Dockerfiles efficaces.

Docker

· 3 minutes de lecture

Les applications modernes s'appuient sur une combinaison de services — base de données, cache, broker de messages, runtime applicatif — chacun avec ses dépendances de version spécifiques. Sans conteneurs, chaque développeur configure son environnement local manuellement, les versions divergent entre machines, et le déploiement implique de reconfigurer chaque serveur à la main. Docker résout ces problèmes en encapsulant l'application et ses dépendances dans une unité portable et reproductible.

GitHub Container Registry (GHCR)

· 3 minutes de lecture

GitHub Container Registry (GHCR) est le registry d'images Docker intégré à GitHub. Il stocke les images au même endroit que le code source, partage la gestion des accès avec les dépôts GitHub, et s'intègre nativement dans les workflows GitHub Actions via le token GITHUB_TOKEN.

GitHub Actions : action réutilisable

· 3 minutes de lecture

Quand une séquence de steps se répète dans plusieurs workflows — checkout + setup + build, ou authentification + push Docker — la factoriser dans une action évite la duplication et centralise la maintenance. Une correction ou une mise à jour s'applique à tous les workflows consommateurs sans toucher chacun individuellement.

GitHub Actions : architecture CI/CD réutilisable

· 3 minutes de lecture

Quand plusieurs dépôts partagent la même stack technique, chacun maintient souvent une copie quasi-identique de ses workflows CI/CD. Une modification — nouvelle version d'un outil, changement de runner, ajout d'une étape de sécurité — doit être répercutée manuellement dans chaque dépôt. Un dépôt centralisé de workflows mutualisés résout ce problème : les dépôts consommateurs appellent les workflows du dépôt central, qui devient le seul point de maintenance.

GitHub Actions

· 5 minutes de lecture

Sans automatisation, livrer du code en production est un processus manuel : un développeur fusionne une branche, lance les tests à la main, construit l'image Docker, se connecte au serveur, déploie. Chaque étape est une occasion d'oublier quelque chose, de sauter un test, ou de déployer une version qui n'a pas été vérifiée. À mesure que l'équipe et le rythme de livraison augmentent, ce processus ne tient plus.

GitHub Actions : ARC

· 3 minutes de lecture

Un runner auto-hébergé classique est une machine fixe qui exécute les jobs séquentiellement. Si dix workflows se déclenchent simultanément, neuf attendent. Actions Runner Controller (ARC) est un opérateur Kubernetes qui provisonne des pods runner à la demande — un pod par job — et les supprime à la fin de l'exécution. La capacité s'adapte automatiquement à la charge.

GitHub Actions : Self-Host Runner

· 3 minutes de lecture

Les runners hébergés par GitHub (ubuntu-latest) sont éphémères, gérés par GitHub, et consomment le quota de minutes de l'organisation. Les runners auto-hébergés tournent sur des machines contrôlées — serveur on-premise, VM cloud, Raspberry Pi — et n'ont pas de quota. Ils donnent accès à des ressources locales : réseau privé, GPU, caches persistants, outils propriétaires.

GitHub Actions : Workflow

· 3 minutes de lecture

Un workflow GitHub Actions est un fichier YAML placé dans .github/workflows/. Il orchestre des jobs qui s'exécutent sur des runners en réponse à des événements. Comprendre les primitives disponibles — matrix, container, artefacts, conditions — permet de construire des pipelines maintenables sans duplication.

Docker Compose

· 11 minutes de lecture

Docker Compose est un outil puissant qui permet de définir et de gérer des applications multi-conteneurs Docker. Il utilise un fichier YAML pour configurer les services de l'application. Ensuite, avec une seule commande, vous pouvez créer et démarrer tous les services à partir de votre configuration.