Jeg havde et støre problem med docker og hvordan container startes i den rigtige rækkefølge. Hvis du kun bruger docker service til at starte dine container kan du ikke helt styre hvilken container som starter i hvilken rækkefølge.

For at løse dette lavet jeg et systemd script som kalder et bash script som starter container op i den rigtige rækkefølge.

Her er et systemd script som starter efter docker er startet.
$ vi /etc/systemd/my_app.service

[Unit]
Description=Restart docker container in the right way.
After=docker.target

[Service]
Type=oneshot
ExecStart=/data/docker/start_service.sh

[Install]
WantedBy=multi-user.target
Du kan se det består af 3 dele. En Unit samt Service og en Install del.

Unit bruges her til at beskrive hvad processen gør. Samt sikre den starter op efter at docker service er startet op.

Service beskriver hvilken type det er, her oneshot den simpleste type af service, samt hvilken process som skal startes her start_service.sh

Install beskriver under hvilken target (type) som den skal oprettes under.

For at gøre den nye service aktiv skal vi fortælle systemd vores nye service, dette gøres med kommandoen systemctl som vist.

Du opretter en oneshot-service som enhver anden tjeneste. En brugeroprettet service fil skal ligge i /etc/systemd/system/, mens systemtjenester skal findes i /usr/lib/systemd/system.

Af typer findes der udover oneshot.
simple,forking
exec,dbus,notify,idle

oneshot er også den type som bruges hvis du ikke specificere hvilken type du skal bruge.

jeg vil ikke komme ind på de andre typer men du skal vide de findes.

For at registere samt enable vores service skriver du.

$ systemctl daemon-reload
$ systemctl enable my_app.service
Disse service kaldes under boot.

Link til jenkins system service

Loading

By Admin

Author: Jeg er en professionel system administrator og grundlægger af linuxboxen.dk Jeg er en ivrig Linux-elsker og open source-entusiast. Jeg bruger Ubuntu og tror på at dele viden. Bortset fra Linux, elsker musik og dyr. Jeg er en stor fan af Dire straits.

Leave a Reply

Your email address will not be published. Required fields are marked *