Image de la bannière : Docker RUN with Systemd

Docker RUN with Systemd

post thumb
by Cindy Piassale/ on 29 Jul 2020

Docker RUN with Systemd

The use of containers (docker or other), for the installation of software in a company, can seem obscure for system administrators.

To simplify the use of docker containers , systemd is an alternative to docker-compose.


The general idea is to define each container as a systemd service. So the administrator uses the standard linux systemctl commands to manage his applications.

In addition we benefit from the management of services (automatic start-up, dependencies, etc.) natively managed by systemd.


Example with a very simple blogging service : ghost.

In the / etc / systemd / system folder, we create a file corresponding to our service.


Description=Docker container

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 \
ExecStop=/usr/bin/docker stop ghost


To be able to start this service, it is necessary to install docker and create the / var / ghost / data folder that we defined as a linked volume and which will receive the blog data.

Example with Centos 7 :

sudo yum install yum-utils -y
sudo yum-config-manager --add-repo
sudo yum install docker-ce
sudo mkdir -p /var/ghost/data


This service can be used like any other service with the usual commands :

systemctl start|restart|stop|status ghost

Once the service is started, the instance ghost that we just launched will be available at http://localhost:8080


The consulation of logs can be made thanks to the command journalctl. To view the logs of a single container you can do the following command :

journalctl -u <container_name>

Example with ghost application :

journalctl -u ghost

We have a more specific article on the managment of logs in containers