В этой статье рассмотрим создание systemd сервиса, который будет запускать контейнер по имени.

1. Создаем контейнер

Мы будем использовать существующий контейнер в сервисе systemd. Для этого давайте его создадим. Для примера будем использовать контейнер reproxy.

1
2
3
4
5
6
7
8
9
sudo podman run \
--name reproxy \
-d \
-p 80:8080 \
-p 443:8443 \
-v /home/me/sites/my-site:/var:rw \
umputun/reproxy \
--file.enabled --file.name=/var/config.yml \
--ssl.acme-location=/var/acme

Удалить все запущенные контейнеры можно командой:

1
sudo podman rm -f $(sudo podman ps -a -q)

2. Создаем конфигурацию для нашего unit

Для этого необходимо добавить файл reproxy-container.service в директорию /etc/systemd/system/ следующего содержания:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[Unit]
Description=Reproxy container

[Service]
Restart=always
ExecStart=/usr/bin/podman start -a reproxy
ExecStop=/usr/bin/podman stop -t 2 reproxy

[Install]
WantedBy=local.target

Для создания файла можно воспользоваться следующей командой:

1
sudo vim /etc/systemd/system/reproxy-container.service

3. Команды управления сервисом

Включить сервис

1
sudo systemctl enable reproxy-container.service

Запустить

1
sudo systemctl start reproxy-container.service

Остановить

1
sudo systemctl stop reproxy-container.service

Посмотреть статус сервиса

1
sudo systemctl status reproxy-container.service

Посмотреть журнал/логи

1
sudo journalctl -u reproxy-container.service

Выводы

Таким образом можно создавать демонов в linux из контейнеров. Вместо podman можно легко использовать docker. Для этого нужно заменить podman на docker.