![](https://umirt.com/wp-content/uploads/2025/01/제목-없음-2.png)
이 글은 추후 참고하기 위해 작성됨.
OS: Rocky Linux 9.5
Container: Podman
시점: 2025.01.06
Podman은 Docker와 달리 컨테이너 자동 시작이 안 된다.
자동 시작을 사용하려면 Quadlet(권장), podman generate systemd(지원 중단), docker-compose.yml에 대한 systemd 유닛 파일 작성 등이 있다.
Quadlet을 사용하는 게 바람직하지만, docker-compose.yml을 systemd에 등록하는 방법도 있다. 이 방법이 가장 쉽다.
rootless 기준
# 사용자 폴더에 유닛 파일 생성
touch /home/user_name/.config/systemd/user
# 유닛 파일 편집
nano /home/user_name/.config/systemd/user/nginx-proxy-manager.service
nginx-proxy-manager.service 유닛 내용 (user_name을 실제 사용자 이름으로 교체하기)
______________________________
[Unit]
Description=Podman-compose Nginx Proxy Manager
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
# podman-compose 커맨드가 끝난 후에도 "Active" 상태로 유지하기 위해 필요
RemainAfterExit=yes
# docker-compose.yml이 있는 디렉터리로 이동
WorkingDirectory=/home/user_name
# 컨테이너 기동
ExecStart=/usr/bin/podman-compose -f /home/user_name/docker-compose.yml up -d
# 컨테이너 정지
ExecStop=/usr/bin/podman-compose -f /home/user_name/docker-compose.yml stop
# systemctl reload 또는 restart 시, 아래 순서로 작동 (stop 후 다시 up)
ExecReload=/usr/bin/podman-compose -f /home/user_name/docker-compose.yml stop && \
/usr/bin/podman-compose -f /home/user_name/docker-compose.yml up -d
# Restart= 옵션을 주어도 Type=oneshot에선 크게 의미가 없다
# 실제로는 systemctl restart 시 ExecStop + ExecStart 순서로 재실행된다.
[Install]
# multi-user.target 대신 user 단위라면 default.target 사용
WantedBy=default.target
______________________________
추가 설명
Type=oneshot + RemainAfterExit=yes로 함으로써, 컨테이너가 백그라운드에서 계속 동작해도 systemd 상에서 “Active” 상태로 인식된다.
# systemd에 등록 및 활성화
# 1) 유닛 파일 새로 인식
systemctl --user daemon-reload
# 2) 부팅 시 자동 실행 (enable)
systemctl --user enable nginx-proxy-manager
# 3) 지금 바로 시작 (start)
systemctl --user start nginx-proxy-manager
# 제대로 뜨는지 확인
systemctl --user status nginx-proxy-manager
podman ps
# 명령 시나리오
# 시작
systemctl --user start nginx-proxy-manager
# 중지
systemctl --user stop nginx-proxy-manager
# 재시작
systemctl --user restart nginx-proxy-manager
# 리로드
systemctl --user reload nginx-proxy-manager
# 정리
이 방식대로 설정하면:
시스템 부팅 시 nginx-proxy-manager.service가 자동으로 실행되어
podman-compose -f /home/user_name/docker-compose.yml up -d 명령어가 수행된다.
systemctl --user stop nginx-proxy-manager 시 컨테이너를 podman-compose stop으로 중지한다.
systemctl --user restart nginx-proxy-manager 시 중지 후 재기동(stop → up -d).
WantedBy=default.target로 지정했으므로, user session(rootless) 기준 부팅 자동 실행이 이뤄집니다. 만약 system-wide로 관리하고 싶다면 /etc/systemd/system/에 유닛을 두고 multi-user.target을 사용하면 된다.
이로써 c97ff515fcb 사용자의 docker-compose.yml 기반 컨테이너들을 systemd와 연동하여, 부팅 자동 실행 및 manual start/stop/restart를 간편하게 제어할 수 있게 된다.