Quand on déploie des applications, certaines informations sont très sensibles : mots de passe, clés API, certificats…
On pourrait les mettre dans un fichier .env ou dans le docker-compose.yml, mais ce n’est pas sécurisé, surtout si le fichier est versionné ou partagé.
Docker propose les Secrets pour stocker ces informations de façon sécurisée et les injecter dans les conteneurs sans les exposer dans les fichiers de configuration.
Concept clé
- Un Secret Docker est une donnée chiffrée que Docker stocke dans son moteur (Swarm).
- Les conteneurs peuvent consommer ces secrets, mais ils ne peuvent pas les modifier et ils ne sont jamais stockés en clair sur le disque.
Exemple : au lieu de mettre
DB_PASSWORD=monmotdepassedans un.env, on crée un secretdb_passwordet Docker le fournit directement à MariaDB au démarrage.
Exemple simple avec Docker Compose (mode Swarm)
1. Créer un secret depuis la CLI :
echo "MonSuperMotDePasse" | docker secret create db_password -
2. Dans votre docker-compose.yml (Swarm mode) :
version: '3.8'
services:
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_password
secrets:
db_password:
external: true
3. Le conteneur MariaDB lit le mot de passe depuis le fichier /run/secrets/db_password fourni automatiquement par Docker.
📌 À retenir pour les débutants
- Secrets = données sensibles sécurisées.
- On les utilise principalement pour les mots de passe, clés API ou certificats.
- Ils sont inaccessibles depuis le host et non versionnables dans Git.
- Cette fonctionnalité nécessite Docker Swarm, mais l’idée conceptuelle reste utile à connaître même en mode simple.