Image de la bannière : Docker RUN avec Systemd

Docker RUN avec Systemd

post thumb
Container
by Cindy Piassale/ on 29 Jul 2020

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.