Podman 컨테이너를 systemd 사용자 서비스로 자동 시작하도록 설정하기

Red Hat Enterprise LinuxBeginner
지금 연습하기

소개

이 챌린지에서는 Podman 컨테이너를 systemd 사용자 서비스로 등록하여 자동으로 시작되도록 구성하는 방법을 학습합니다. 이는 Red Hat Enterprise Linux(RHEL) 환경에서 시스템 부팅 시 컨테이너 기반 애플리케이션이 항상 실행 중이고 사용 가능한 상태를 유지하도록 보장하는 권장 방식입니다. 이 과정을 통해 podman을 이용한 컨테이너 생명주기 관리와 시스템의 systemd 초기화 프로세스 통합 방법을 실습하며, 시스템 관리자의 핵심 역량을 쌓을 수 있습니다.

컨테이너를 systemd 서비스로 자동 시작하도록 설정

이번 단계에서는 컨테이너를 systemd 서비스로 구성하여 자동으로 시작되도록 설정합니다. 이를 통해 컨테이너화된 애플리케이션이 항상 중단 없이 실행되고 접근 가능한 상태를 유지할 수 있습니다.

작업 과제

목표는 Podman 컨테이너에서 Nginx 웹 서버를 실행하고, 시스템이 시작될 때마다 자동으로 실행되도록 설정하는 것입니다.

  • nginx:latest 이미지를 기반으로 podman 컨테이너를 생성하고 실행합니다.
  • 해당 컨테이너를 위한 systemd 사용자 서비스 파일을 생성합니다.
  • labex 사용자에 대해 서비스가 자동으로 시작되도록 활성화합니다.
  • labex 사용자에 대해 링거링 (lingering) 설정을 활성화하여, 활성 로그인 세션이 없더라도 부팅 시 서비스가 시작되도록 합니다.
  • 컨테이너가 정상적으로 실행 중이며 Nginx 서비스에 접근 가능한지 확인합니다.

요구 사항

  • 모든 컨테이너 관리 작업에는 반드시 podman을 사용해야 합니다.
  • 컨테이너 이미지는 docker.io/library/nginx:latest를 사용해야 합니다.
  • 컨테이너 이름은 my-nginx로 지정해야 합니다.
  • 호스트의 8080 포트를 컨테이너의 80 포트로 매핑해야 합니다.
  • systemd 서비스 파일은 podman generate systemd 명령어를 사용하여 생성해야 합니다.
  • 생성된 서비스 파일은 ~/.config/systemd/user/container-my-nginx.service 경로에 위치해야 합니다.
  • loginctl 명령어를 사용하여 labex 사용자의 링거링 설정을 활성화해야 합니다.

예시

챌린지를 완료한 후 curl http://localhost:8080 명령을 실행하면 다음과 같이 Nginx 환영 페이지에 접속할 수 있어야 합니다:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

요약

이 챌린지를 통해 podman으로 컨테이너를 생성하고, 이를 관리하기 위한 systemd 사용자 서비스를 생성하는 방법을 배웠습니다. 서비스를 자동 시작하도록 구성하고 링거링 설정을 활성화하여 시스템 부팅 시 컨테이너가 구동되도록 보장하는 과정을 실습했습니다. 이러한 프로세스는 RHEL 및 유사 시스템에서 안정적인 컨테이너 애플리케이션을 배포하기 위한 기본이며, 기존 방식보다 더욱 견고한 관리 환경을 제공합니다.

✨ 솔루션 확인 및 연습