Перейти к содержанию

Автозапуск Podman-контейнеров на Linux системах

С использованием systemd (не требуется вход в учетную запись):

После настройки, согласно инструкции:

  • Автозапуск будет происходить от имени пользователя (в данной инструкции имя пользователя - gamma)

  • Контейнеры будут запускаться при старте системы, без входа в учетную запись.

  • Для запуска и остановки контейнеров используются скрипты start_gamma.sh и stop_gamma.sh из дистрибутива. (в данном примере находятся в папке /home/scripts/)

Последовательность действий

  1. Создайте целевую структуру каталогов

    sudo mkdir -p /usr/local/bin/gamma/scripts/
    
  2. Скопируйте скрипты из папки, далее используется путь /home/scripts

    sudo cp /home/scripts/start_gamma.sh /usr/local/bin/gamma/scripts/
    
    sudo cp /home/scripts/stop_gamma.sh /usr/local/bin/gamma/scripts/
    

    Сделайте их исполняемыми:

    sudo chmod +x /usr/local/bin/gamma/scripts/start_gamma.sh
    
    sudo chmod +x /usr/local/bin/gamma/scripts/stop_gamma.sh
    
  3. Создайте папку для пользовательского systemd

    mkdir -p ~/.config/systemd/user/
    
  4. Создайте файл службы gamma-server.service

    [Unit]
    Description=Gamma server in Podman
    Wants=network-online.target
    After=network.target network-online.target

    [Service]
    Type=oneshot
    ExecStart=/usr/local/bin/gamma/scripts/start_gamma.sh
    RemainAfterExit=true
    ExecStop=/usr/local/bin/gamma/scripts/stop_gamma.sh
    TimeoutStopSec=120

    [Install]
    WantedBy=default.target

Сохраните файл (Ctrl+O, Enter, Ctrl+X).

  1. Перезапустите пользовательский экземпляр systemd

    systemctl --user daemon-reexec
    
    systemctl --user daemon-reload
    
  2. Включите автозапуск службы

    systemctl --user enable gamma-server
    
  3. Включите linger для пользователя (один раз от root) Это позволяет systemd запускать пользовательские службы даже без входа пользователя.

    sudo loginctl enable-linger <ваш_пользователь>
    

    Замените <ваш_пользователь> на ваше имя (например, gamma):

    sudo loginctl enable-linger gamma
    
  4. Проверьте работу службы

    systemctl --user start gamma-server
    
    systemctl --user status gamma-server
    
  5. Перезагрузите систему и проверьте автозапуск

    sudo reboot
    

    После загрузки:

    systemctl --user status gamma-server
    
    podman ps
    

C использованием crontab (требуется вход в учетную запись):

После настройки, согласно инструкции:

  • Автозапуск будет происходить от имени пользователя (в данной инструкции имя пользователя - gamma)

  • Контейнеры будут запускаться только после входа в учетную запись.

  • Для запуска контейнеров используется скрипт start_gamma.sh из дистрибутива. (в данном примере находится в папке /home/scripts/)

Последовательность действий

  1. Делаем скрипт исполняемым:

    sudo chmod +x /home/scripts/start_gamma.sh
    
  2. Открываем файл /etc/crontab:

sudo nano /etc/crontab
  1. Добавляем строку в конец файла:

    @reboot gamma /home/scripts/start_gamma.sh
    
  2. Сохранение в Nano:

Нажмите Ctrl + O → сохранить

Нажмите Enter → подтвердить имя файла

Нажмите Ctrl + X → выйти из редактора