Des containers avec systemd
Utiliser des containers Docker à la volée est relativement simple, avec un docker run on lance simplement notre application, mais parfois, les managers tels quels peut vite s’avérer compliqué et difficile à suivre. Pour simplifier le lancement et la gestion de containers Docker, on peut simplement utiliser des unités systemd.
Créer une unité systemd
Pour avoir notre premier service systemd qui gérera notre container (Redis dans l’exemple), on va créer le fichier /etc/systemd/system/redis.service
:
[Unit]
Description=Redis Service
After=docker.service
Requires=docker.service
[Service]
ExecStartPre=-/usr/bin/docker kill redis
ExecStartPre=-/usr/bin/docker rm redis
ExecStartPre=-/usr/bin/docker pull redis:latest
ExecStart=/usr/bin/docker run -d --name redis --restart always redis:latest
ExecStop=/usr/bin/docker stop redis
[Install]
WantedBy=multi-user.target
Maintenant que notre service existe, on peut l’ajouter au démarrage du système et le démarrer. Le premier lancement pourra prendre quelque temps car on récupère (pull) la dernière version de l’image de Redis :
systemctl enable redis
systemctl daemon-reload
systemctl start redis
On peut ensuite vérifier que notre container tourne correctement avec docker ps
.
Vous pouvez désormais gérer votre service directement depuis systemd !
Nous allons voir également comment gérer un stack de containers grâce à systemd et docker-compose, pour cela on peut créer une unité systemd et remplacer la fin du fichier par cela :
ExecStartPre=-/usr/local/bin/docker-compose -f /path/compose-file.yml down
ExecStart=/usr/local/bin/docker-compose -f /path/compose-file.yml up -d
ExecStop=/usr/local/bin/docker-compose -f /path/compose-file.yml stop
Il suffit ensuite de créer son fichier docker-compose.yml
au bon endroit pour gérer le lancement de votre stack de container directement depuis systemd.
Pour redémarrer proprement votre service, utilisez la commande suivante : systemctl restart redis
Laisser un commentaire