
Docker RUN avec Systemd
L’utilisation de conteneurs (docker ou autre), pour l’installation de logiciels en entreprise, peut paraitre obscure pour les administrateurs systèmes.
Pour simplifier l’utilisation des conteneurs docker, systemd est une alternative à docker-compose.
Principe
L’idée générale est de définir chaque conteneur comme un service
systemd. Ainsi
l’administrateur utilise les commandes standard linux systemctl
pour
gérer ses applications.
De plus nous profitons de la gestion des services (démarrage automatique, dépendances, etc.) nativement géré par systemd.
Mise en oeuvre
Exemple avec un service de blogging très simple : ghost.
Dans le dossier /etc/systemd/system
, on crée un fichier correspondant
à notre service.
#/etc/systemd/system/ghost.service
[Unit]
Description=Docker container
BindsTo=docker.service
After=docker.service
[Service]
Restart=on-failure
RestartSec=10
ExecStartPre=-/usr/bin/docker kill ghost
ExecStartPre=-/usr/bin/docker rm ghost
ExecStart=/usr/bin/docker run --name ghost \
-v "/var/ghost/data:/var/lib/ghost/content" \
-e "url=http://localhost:8080" \
-p 8080:2368 \
ghost
ExecStop=/usr/bin/docker stop ghost
[Install]
WantedBy=multi-user.target
Pour pouvoir démarrer ce service, il est nécessaire d’installer docker
et de créer le dossier /var/ghost/data
que nous avons défini en volume
lié et qui recevra les données du blog.
Exemple sous centos 7 :
sudo yum install yum-utils -y
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce
sudo mkdir -p /var/ghost/data
Utilisation
Ce service s’utilise comme tout autre service avec les commandes habituelles :
systemctl start|restart|stop|status ghost
Une fois le service démarré, l’instance ghost que l’on vient de lancer sera disponible à l’adresse http://localhost:8080
Logs
La consultation des logs se fait grâce à la commande journalctl
. Pour
visualiser les logs d’un seul container vous pouvez faire la commande
suivante :
journalctl -u <nom_conteneur>
Exemple avec l’application ghost :
journalctl -u ghost
Nous ferons prochainement un article plus spécifique sur la gestion des logs dans les conteneurs.