검색

14장. Podman을 사용하여 systemd에 컨테이너 포트 지정

download PDF

Podman(Pod Manager)은 완전히 기능을 갖춘 간단한 컨테이너 엔진입니다. Podman은 다른 컨테이너 엔진에서 보다 쉽게 전환할 수 있도록 하고 Pod, 컨테이너 및 이미지를 관리할 수 있는 Docker CLI를 제공합니다.

원래 Podman은 시작 순서, 종속성 검사 및 실패한 서비스 복구와 같은 전체 Linux 시스템을 제공하거나 서비스를 관리하도록 설계되지 않았습니다. systemd 는 완전한 시스템 초기화를 담당했습니다. Red Hat은 컨테이너를 systemd 와 통합하므로 다른 서비스 및 기능이 Linux 시스템에서 관리되는 것과 동일한 방식으로 Podman에서 빌드한 OCI 및 Docker 형식의 컨테이너를 관리할 수 있습니다. systemd 초기화 서비스를 사용하여 Pod 및 컨테이너에서 작업할 수 있습니다.

systemd 장치 파일을 사용하면 다음을 수행할 수 있습니다.

  • systemd 서비스로 시작할 컨테이너 또는 포드를 설정합니다.
  • 컨테이너화된 서비스가 실행되는 순서를 정의하고 종속성을 확인합니다(예: 다른 서비스가 실행 중인지, 파일을 사용할 수 있거나 리소스가 마운트되었는지 확인).
  • systemctl 명령을 사용하여 systemd 시스템의 상태를 제어합니다.

systemd 장치 파일을 사용하여 컨테이너 및 Pod에 대한 이식 가능한 설명을 생성할 수 있습니다.

14.1. Quadlets를 사용하여 systemd 장치 파일 자동 생성

Quadlet을 사용하면 일반 systemd 장치 파일과 매우 유사한 형식으로 컨테이너를 실행하는 방법을 설명합니다. 컨테이너 설명은 관련 컨테이너 세부 사항에 중점을 두고 systemd 에서 실행 중인 컨테이너에 대한 기술적 세부 정보를 숨깁니다. 다음 디렉터리 중 하나에 < CTRNAME > .container 단위 파일을 생성합니다.

  • root 사용자의 경우: /usr/share/containers/systemd/ 또는 /etc/containers/systemd/
  • rootless 사용자의 경우: $HOME/.config/containers/systemd/, $XDG_CONFIG_HOME/containers/systemd/, /etc/containers/systemd/users/$(UID) 또는 /etc/containers/systemd/users/
참고

Quadlet은 Podman v4.6부터 사용할 수 있습니다.

사전 요구 사항

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

절차

  1. mysleep.container 유닛 파일을 생성합니다.

    $ cat $HOME/.config/containers/systemd/mysleep.container
    [Unit]
    Description=The sleep container
    After=local-fs.target
    
    [Container]
    Image=registry.access.redhat.com/ubi9-minimal:latest
    Exec=sleep 1000
    
    [Install]
    # Start by default on boot
    WantedBy=multi-user.target default.target

    [Container] 섹션에서 다음을 지정해야 합니다.

    • image - 컨테이너 mage you want to tun
    • exec - 컨테이너 내에서 실행하려는 명령

      이를 통해 systemd 장치 파일에 지정된 다른 모든 필드를 사용할 수 있습니다.

  2. mysleep.container 파일을 기반으로 mysleep.service 를 생성합니다.

    $ systemctl --user daemon-reload
  3. 선택 사항: mysleep.service 의 상태를 확인하십시오 :

    $ systemctl --user status mysleep.service
    ○ mysleep.service - The sleep container
    	 Loaded: loaded (/home/username/.config/containers/systemd/mysleep.container; generated)
    	 Active: inactive (dead)
  4. mysleep.service 를 시작합니다.

    $ systemctl --user start mysleep.service

검증

  1. mysleep.service 의 상태를 확인하십시오 :

    $ systemctl --user status mysleep.service
    ● mysleep.service - The sleep container
    	 Loaded: loaded (/home/username/.config/containers/systemd/mysleep.container; generated)
    	 Active: active (running) since Thu 2023-02-09 18:07:23 EST; 2s ago
       Main PID: 265651 (conmon)
          Tasks: 3 (limit: 76815)
    	 Memory: 1.6M
       	 CPU: 94ms
    	 CGroup: ...
  2. 모든 컨테이너를 나열합니다.

    $ podman ps -a
    CONTAINER ID  IMAGE                            COMMAND               CREATED            STATUS                          PORTS   NAMES
    421c8293fc1b  registry.access.redhat.com/ubi9-minimal:latest               sleep 1000  30 seconds ago   Up 10 seconds ago systemd-mysleep

    생성된 컨테이너의 이름은 다음 요소로 구성됩니다.

    • systemd- 접두사
    • systemd 장치의 이름, 즉 systemd-mysleep

      이 이름 지정은 systemd 단위로 실행되는 컨테이너와 공통 컨테이너를 구분하는 데 도움이 됩니다. 또한 컨테이너가 실행되는 장치를 결정하는 데 도움이 됩니다. 컨테이너 이름을 변경하려면 [Container] 섹션에서 ContainerName 필드를 사용합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.