14.5. Podman을 사용하여 systemd 장치 파일 생성

Podman을 사용하면 systemd 가 컨테이너 프로세스를 제어하고 관리할 수 있습니다. podman generate systemd 명령을 사용하여 기존 컨테이너 및 Pod에 대한 systemd 장치 파일을 생성할 수 있습니다. 생성된 장치 파일이 Podman 업데이트를 통해 자주 변경되고 podman generate systemd 를 사용하면 최신 버전의 장치 파일을 가져오므로 podman generate systemd 를 사용하는 것이 좋습니다.

참고

Podman v4.6부터 일반 systemd 장치 파일과 유사한 형식으로 컨테이너를 실행하는 방법을 설명하고 systemd 에서 실행 중인 컨테이너의 복잡성을 숨길 수 있습니다.

사전 요구 사항

  • container-tools meta-package가 설치되어 있습니다.

절차

  1. 컨테이너를 만듭니다(예: myubi):

    $ podman create --name myubi registry.access.redhat.com/ubi9:latest sleep infinity
    0280afe98bb75a5c5e713b28de4b7c5cb49f156f1cce4a208f13fee2f75cb453
  2. 컨테이너 이름 또는 ID를 사용하여 systemd 장치 파일을 생성하고 이를 ~/.config/systemd/user/container-myubi.service 파일로 보냅니다.

    $ podman generate systemd --name myubi > ~/.config/systemd/user/container-myubi.service

검증 단계

  • 생성된 systemd 장치 파일의 내용을 표시합니다.

    $ cat ~/.config/systemd/user/container-myubi.service
    # container-myubi.service
    # autogenerated by Podman 3.3.1
    # Wed Sep  8 20:34:46 CEST 2021
    
    [Unit]
    Description=Podman container-myubi.service
    Documentation=man:podman-generate-systemd(1)
    Wants=network-online.target
    After=network-online.target
    RequiresMountsFor=/run/user/1000/containers
    
    [Service]
    Environment=PODMAN_SYSTEMD_UNIT=%n
    Restart=on-failure
    TimeoutStopSec=70
    ExecStart=/usr/bin/podman start myubi
    ExecStop=/usr/bin/podman stop -t 10 myubi
    ExecStopPost=/usr/bin/podman stop -t 10 myubi
    PIDFile=/run/user/1000/containers/overlay-containers/9683103f58a32192c84801f0be93446cb33c1ee7d9cdda225b78049d7c5deea4/userdata/conmon.pid
    Type=forking
    
    [Install]
    WantedBy=multi-user.target default.target
    • Restart=on-failure 행은 재시작 정책을 설정하고 서비스를 완전히 시작하거나 중지할 수 없거나 프로세스가 0이 아닌 경우 다시 시작하도록 systemd 에 지시합니다.
    • ExecStart 행은 컨테이너를 시작하는 방법을 설명합니다.
    • ExecStop 행은 컨테이너를 중지하고 제거하는 방법을 설명합니다.