Quadlet: Podman 컨테이너를 systemd로 실행하기
(mo8it.com)- Quadlet은 Podman 컨테이너를 systemd 서비스로 실행할 수 있게 해주는 도구임. 이는 서버 재부팅 후 백그라운드에서 자동으로 컨테이너를 시작하는 데 유용함.
- 기존에는
podman generate systemd
명령어를 사용했으나, 이제는 Quadlet로의 마이그레이션이 권장됨.
기존 방법
- 컨테이너를 생성하고, systemd 서비스 파일을 생성한 후, 해당 파일을 적절한 디렉토리로 이동하여 서비스를 활성화해야 했음.
- 이 과정은 명령어가 길고 반복적이며, 수동으로 파일을 수정해야 하는 불편함이 있었음.
문제점
- 기존 방법은 복잡하고 유연성이 부족했음.
- Docker Compose의 편리함과 비교했을 때, 수동으로 많은 작업을 해야 했음.
Quadlet
- Quadlet을 사용하면
.container
파일을 생성하여 컨테이너를 관리할 수 있음. -
[Container]
섹션을 통해 이미지, 포트, 볼륨, 환경 변수를 설정할 수 있음. -
[Service]
섹션에서 컨테이너 재시작 정책을 설정할 수 있음. -
[Install]
섹션에서 부팅 시 자동 시작을 설정할 수 있음.
더 나은 점
- 하나의 파일로 모든 설정을 관리할 수 있으며, systemd의 모든 옵션을 사용할 수 있음.
- 설정 파일 작성이 스크립트 작성보다 쉬움.
- 종속성을 쉽게 관리할 수 있음.
종속성
- 앱 컨테이너가 데이터베이스 컨테이너에 의존하는 경우,
[Unit]
섹션에서Requires
와After
옵션을 사용하여 종속성을 설정할 수 있음.
파일이 너무 많을까?
- 여러 파일로 나누는 것이 복잡성을 줄일 수 있음.
- 관련된 파일들을 그룹화하여 관리할 수 있음.
이미지 업데이트
-
AutoUpdate=registry
옵션을 사용하면podman auto-update
명령어로 이미지 업데이트 및 컨테이너 재시작이 가능함. -
latest
태그 사용은 위험할 수 있으므로, 구체적인 버전 태그 사용을 권장함.
podman-compose에 대해
-
podman-compose
는 Compose 파일을 Podman과 systemd로 변환하는 스크립트지만, 장기적인 대안으로는 적합하지 않음. - Quadlet은 Podman의 무데몬 설계와 더 잘 맞음.
추가 자료
- Quadlet에 대한 더 깊은 이해를 위해
podman-systemd.unit
매뉴얼 페이지를 읽어볼 것을 권장함. - Quadlet은 컨테이너뿐만 아니라, pod, 네트워크, 볼륨도 관리할 수 있음.
- systemd 유닛 파일 작성에 익숙하지 않다면
systemd.unit
과systemd.service
매뉴얼 페이지도 참고할 것. -
podlet
은 Podman 명령어 또는 Compose 파일에서 Quadlet 파일을 생성하는 데 도움을 줄 수 있는 도구임.
Hacker News 의견
-
Quadlet은 Docker Compose의 대안으로, "생산 환경과 유사한 환경에서 상호 의존적인 컨테이너를 실행"하는 데 유용함. 그러나 개발 환경에서는 덜 유용함
- Docker Compose는 데이터베이스, Redis, OpenSearch 등의 종속성을 쉽게 관리할 수 있음
- Quadlet은 파일을
~/.config/containers/systemd
에 두어야 하므로 프로젝트와의 격리가 어려움 - 많은 개발자들이 여전히 Docker를 사용하며, Podman을 사용하려면 수동으로 설정을 추가해야 함
- 개발을 위한 Docker Compose의 대안이 필요하지만, Quadlet은 적합하지 않음
-
Quadlet을 발견하고 Atomic OS와 루트리스 Quadlet을 기반으로 홈랩을 구축했으며, 이를 강력히 추천함
- systemd 소켓 활성화를 사용할 수 있어 Traefik을 자동으로 활성화할 수 있음
- 루트리스 설정에서 소스 IP를 보존하는 유일한 방법임
-
Quadlet은 Podman에서 나온 최고의 도구 중 하나이며, 컨테이너 기반 작업에 관심 있는 사람들에게 추천함
- 컨테이너를 시스템 서비스처럼 다룰 수 있어 편리함
- Docker의 대안으로 Quadlet을 사용하면 더 깔끔한 설정이 가능함
- 로컬 개발 환경에서는 Docker Compose의 대안이 아니며, Podman 팀도 이에 대해 큰 관심이 없음
-
Docker Compose의 편리함 때문에 많은 사람들이 Docker에서 Podman으로 전환하는 것을 주저함
- Quadlet은 Docker Compose의 대안으로 Podman을 사용할 수 있게 해줌
- Docker를 그리워하지 않을 것이며, 루트리스 컨테이너 실행의 보안성을 누릴 수 있음
-
Podman-Compose가 "유지 관리되지 않음"이라고 언급되었지만, Podlet도 비슷한 상태임
- Podlet은 Docker Compose의 많은 기능을 지원하지 않으며, 여러 yaml 파일을 쌓는 것을 지원하지 않음
-
Podman의 업스트림이 Debian/Ubuntu에 대한 저장소를 제공하지 않아 불편함
- Docker Compose로 돌아가게 되었음
-
openSUSE MicroOS를 사용하여 Podman 컨테이너를 systemd/quadlet 하에서 실행하게 되었으며, 현재 설정에 만족함
- Podman Compose는 사용하기 불편했으며, Quadlet이 더 나은 선택임
-
systemd와 Podman의 통합을 좋아함
- Docker Compose는 여전히 경쟁력이 있으며, Quadlet은 프로젝트 디렉토리를 복잡하게 만들 수 있음
-
Quadlet이 Hacker News의 첫 페이지에 올라온 것이 흥미로움
- Kubernetes YAML을 사용하여 이동성이 높음
-
Quadlet은 컨테이너를 일반 시스템 서비스처럼 사용할 수 있게 해줌
- 루트리스 컨테이너의 UX는 이 개념과 잘 맞지 않음
- 루트리스 Quadlet을 시스템 세션 내에서 실행할 수 있기를 바람