Создание юнит-файла systemd с использованием Quadlet#

Quadlet — инструмент для запуска контейнеров podman в формате юнит-файлов systemd.

В настоящее время создание юнит-файлов Quadlet доступно для пользователя с административными полномочиями в следующих каталогах: /usr/share/containers/systemd/ или /etc/containers/systemd/.

Для создания юнит-файла systemd с использованием Quadlet выполните следующий сценарий:

  1. Создайте юнит-файл mysleep.container:

    cat /etc/containers/systemd/
    

    Со следующим содержимым:

    [Unit]
    Description=The sleep container
    After=local-fs.target
    
    [Container]
    Image=localhost/container-name:latest
    Exec=sleep 1000
    
    [Install]
    # Запуск по умолчанию при загрузке
    WantedBy=multi-user.target default.target
    

    Обратите внимание на поля в разделе [Container]:

    • Image - путь к контейнеру, который будет запускаться в формате юнит-файла;

    • Exec - команда, которая будет выполняться внутри контейнера.

  2. Создайте mysleep.service на основе mysleep.container:

    systemctl daemon-reload
    
  3. Опционально. Проверьте статус mysleep.service:

    systemctl status mysleep.service
    ○ mysleep.service - The sleep container
    	 Loaded: loaded (/etc/containers/systemd/mysleep.container; generated)
    	 Active: inactive (dead)
    
  4. Запустите mysleep.service:

    systemctl start mysleep.service
    
  5. Проверьте статус mysleep.service:

    systemctl status mysleep.service
    ● mysleep.service - The sleep container
    	 Loaded: loaded (/etc/containers/systemd/mysleep.container; generated)
    	 Active: active (running) since Thu 2023-01-01 11:00:00 EST; 2s ago
       Main PID: 265651 (conmon)
          Tasks: 3 (limit: 76815)
    	 Memory: 1.6M
       	 CPU: 94ms
    	 CGroup: ...
    
  6. Проверьте, что контейнер запущен, с помощью команды:

    podman ps -a
    CONTAINER ID  IMAGE                            COMMAND               CREATED            STATUS                          PORTS   NAMES
    421c8293fc1b  localhost/container-name:latest               sleep 1000  30 seconds ago   Up 10 seconds ago systemd-mysleep