Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu’il s’agit d’une erreur. {{indexmenu_n>10}} # Configuration et commandes du démon Docker <bootnote>Cette page explique à la fois comment configurer le démon Docker, et montre la configuration actuellement en production.</bootnote> ## Commandes Après avoir [installé Docker sur Debian](https://docs.docker.com/engine/install/debian/), Docker est lancé à travers un service `systemd`. <bootnote>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.</bootnote> Il se contrôle donc comme un service habituel `systemd`. En particulier, pour l'activer au démarrage et le lancer, on utilisera : ```bash systemctl enable docker systemctl start docker ``` ## Configuration Le démon peut se configurer de deux façons : via un fichier *drop-in* `systemd`, ou via un fichier de configuration. <bootnote>La plupart des options de configuration peuvent être inspectée "à chaud" avec la commande `docker system info`.</bootnote> ### Drop in <bootnote critical>Ne faire cette opération qu'après avoir [[technique:docker:admin:socket-certs|générer les certificats]]. Sinon, on saute à la suivante.</bootnote> 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. <bootnote warning>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](https://docs.docker.com/config/daemon/#troubleshoot-conflicts-between-the-daemonjson-and-startup-scripts).</bootnote> 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 : ```bash systemctl daemon-reload systemctl restart docker ``` <bootnote web>Documentation complète : https://docs.docker.com/config/daemon/systemd/</bootnote> ### Fichier de configuration <bootnote>C'est le moyen préféré pour configurer le démon Docker.</bootnote> 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. <bootnote web>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</bootnote> Dans notre cas, on crée le fichier et on ajoute ces paramètres : ```json { "log-driver": "local" } ``` <bootnote web>La rotation des logs se fait automatiquement et on préfère `local` à l'ancien `json-file`. Voir [la documentation officielle](https://docs.docker.com/config/containers/logging/configure/) à ce sujet.</bootnote> ### Live restore <bootnote critical>Tant que [cette issue](https://github.com/moby/moby/issues/41686) 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`.</bootnote> Cette fonctionnalité permet de laisser les conteneurs Docker allumés lorsque le démon est éteint, pour une maintenance, un changement de configuration ou une mise à jour mineure. <bootnote web>La description complète est disponible ici : https://docs.docker.com/config/containers/live-restore/</bootnote> <bootnote warning>Une mise à jour majeure du démon (*e.g* X.Y → X.Z) nécessite tout de même un redémarrage</bootnote> 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. ### Rotation de logs 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. ## Troubleshooting <bootnote web>On se référera à la documentation officielle : https://docs.docker.com/config/daemon/</bootnote> ## À la fin On lance Docker et on l'active au démarrage : ``` systemctl enable --now docker ``` technique/docker/admin/config.txtde qduchemi