podman 자동 재시작
주) 이렇게 안 해도
Podman + docker-compose
(또는 podman-compose
) 환경에서 OS 재부팅 후 컨테이너 자동 시작을 설정하려면 Docker처럼 기본적으로 restart: always
만으로는 자동 시작되지 않으며, Podman의 systemd 통합을 사용해야 합니다.
✅ 방법 1: podman generate systemd
로 systemd 유닛 생성
-
컨테이너를 먼저 실행
podman run -d --name my-app-container my-image
-
systemd 서비스 유닛 파일 생성
podman generate systemd --name my-app-container --files --restart-policy=always
이 명령은 현재 디렉토리에 .service
파일을 생성합니다. 예를 들어:
container-my-app-container.service
-
systemd 디렉토리로 복사
sudo cp container-my-app-container.service /etc/systemd/system/
-
서비스 등록 및 자동 시작 설정
sudo systemctl daemon-reexec
sudo systemctl enable --now container-my-app-container.service
✅ 방법 2: Podman pod을 사용하고 pod 기준으로 systemd 설정
Podman pod을 사용할 경우에도 동일하게 podman generate systemd --name mypod
로 유닛을 만들고 등록할 수 있습니다.
✅ podman-compose
사용 시
podman-compose
는 자체적으로 docker-compose.yml
을 해석해 Podman 컨테이너를 실행하지만, systemd 서비스 유닛을 자동으로 만들지는 않습니다.
대신 다음과 같은 스크립트를 만들어 직접 서비스화할 수 있습니다:
- 예시 systemd 유닛 (예:
/etc/systemd/system/myapp.service
):
[Unit]
Description=My Podman Compose App
After=network.target
[Service]
Type=exec
WorkingDirectory=/path/to/project
ExecStart=/usr/bin/podman-compose up
ExecStop=/usr/bin/podman-compose down
Restart=always
[Install]
WantedBy=multi-user.target
- 유닛 등록:
sudo systemctl daemon-reload
sudo systemctl enable --now myapp.service
💡 정리
방식 | 자동 시작 지원 | 권장도 |
---|---|---|
podman generate systemd |
✅ | ✅ 매우 안정적 |
podman-compose + 수동 systemd 작성 |
✅ | 보통 |
restart: always 만 사용 |
❌ | Podman에서는 작동 안 함 |
Podman에서 자동 재시작을 하려면 systemd 기반 관리가 필수입니다. 사용 중인 환경에 맞춰 예제 systemd 유닛 파일을 더 구체적으로 작성해 드릴 수도 있어요. podman-compose
기반으로 쓰실 건가요, 아니면 단일 컨테이너(pod 없이)로 쓰실 건가요?