Note:
Cette page explique à la fois comment configurer le démon Docker, et montre la configuration actuellement en production.
Après avoir installé Docker sur Debian, Docker est lancé à travers un service systemd
.
Note:
Le démon Docker est le programme qui reçoit l’ensemble des commandes Docker et qui gère le cycle de vie des conteneurs.
Il se contrôle donc comme un service habituel systemd
.
En particulier, pour l’activer au démarrage et le lancer, on utilisera :
systemctl enable docker
systemctl start docker
Le démon peut se configurer de deux façons : via un fichier drop-in systemd
, ou via un fichier de configuration.
Note:
La plupart des options de configuration peuvent être inspectée “à chaud” avec la commande docker system info
.
Important:
Ne faire cette opération qu’après avoir générer les certificats. Sinon, on saute à la suivante.
L’installation de Docker livre un fichier de service situé à /lib/systemd/system/docker.service
.
On ne peut pas le modifier car il est écrasé à chaque ré-installation.
Attention:
Cette manière de faire n’est pas privilégiée. On l’utilise uniquement pour exposer le démon Docker en TLS, car on a pas le choix.
L’idée est donc de créer un fichier /etc/systemd/system/docker.service.d/override.conf
, dont les valeurs vont venir écraser celles du fichier original.
À partir de là, la voie est libre pour modifier tous les paramètres liés à systemd
que vous souhaitez, ou les paramètres passés en configuration du démon Docker.
Par exemple, pour exposer le démon Docker via TLS :
[Service] ExecStart= ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/DATA/docker/remote/ca.pem --tlscert=/DATA/docker/remote/server-cert.pem --tlskey=/DATA/docker/remote/server-key.pem --host=tcp://0.0.0.0:2376 --host=fd:// [Unit] Requires=docker.socket
Suite à ce genre de modifications, il faut recharger la configuration systemd
et redémarrer le démon Docker :
systemctl daemon-reload systemctl restart docker
Lien:
Documentation complète : https://docs.docker.com/config/daemon/systemd/
Note:
C’est le moyen préféré pour configurer le démon Docker.
Par défaut, la configuration s’effectue au format JSON dans le fichier /etc/docker/daemon.json
. Elle est prise en compte au démarrage du démon.
Lien:
La référence complète pour le fichier de configuration se trouve ici : https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
Dans notre cas, on crée le fichier et on ajoute ces paramètres :
{ "log-driver": "local" }
Lien:
La rotation des logs se fait automatiquement et on préfère local
à l’ancien json-file
. Voir la documentation officielle à ce sujet.
Important:
Tant que cette issue ne sera pas résolue, le live restore est désactivé sur toutes les machines. En effet, il y a risque de suppression de l’ensemble des données de production lors du lancement de commandes de type docker volume prune
.
Lien:
La description complète est disponible ici : https://docs.docker.com/config/containers/live-restore/
Attention:
Une mise à jour majeure du démon (e.g X.Y → X.Z) nécessite tout de même un redémarrage
Une fois cette fonctionnalité activée, on peut modifier un paramètre de configuration (par exemple passer en mode debug
), et redémarrer le démon Docker, sans interruption de service.
Par défaut, les logs des conteneurs sont conservés indéfiniment (i.e. jusqu’à la destruction du conteneur). Si un conteneur, à cause d’un debug
ou d’un bug, produit des quantités énormes de logs, la mémoire peut saturer. Ces options permettent de limiter les logs par conteneur à une taille largement suffisante, à savoir 100M.
Lien:
On se référera à la documentation officielle : https://docs.docker.com/config/daemon/
On lance Docker et on l’active au démarrage :
systemctl enable --now docker