Red Hat Training

A Red Hat training course is available for RHEL 8

18.9. Podman 컨테이너 내부에 컨테이너 빌드

Podman을 사용하여 컨테이너에서 컨테이너를 실행할 수 있습니다. 이 예에서는 Podman을 사용하여 이 컨테이너 내에서 다른 컨테이너를 빌드하고 실행하는 방법을 보여줍니다. 컨테이너는 간단한 텍스트 기반 게임인 "Moon-buggy"를 실행합니다.

사전 요구 사항

  • container-tools 모듈이 설치되어 있습니다.
  • registry.redhat.io 레지스트리에 로그인되어 있습니다.

    # podman login registry.redhat.io

절차

  1. registry.redhat.io/rhel8/podman 이미지를 기반으로 하여 컨테이너를 실행합니다.

    # podman run --privileged --name podman_container -it \
      registry.redhat.io/rhel8/podman /bin/bash
    • registry.redhat.io/rhel8/podman 이미지를 기반으로 podman_container 라는 외부 컨테이너를 실행합니다.
    • it 옵션은 컨테이너 내에서 대화형 bash 쉘을 실행하도록 지정합니다.
    • privileged 옵션은 호스트에서 컨테이너를 분리하는 보안 기능을 비활성화합니다.
  2. podman_container 컨테이너 내에 Containerfile 을 생성합니다.

    # vi Containerfile
    FROM registry.access.redhat.com/ubi8/ubi
    RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
    RUN yum -y install moon-buggy && yum clean all
    CMD ["/usr/bin/moon-buggy"]

    Containerfile 의 명령은 다음과 같은 빌드 명령을 수행합니다.

    • registry.access.redhat.com/ubi8/ubi 이미지에서 컨테이너를 빌드합니다.
    • epel-release-latest-8.noarch.rpm 패키지를 설치합니다.
    • north -buggy 패키지를 설치합니다.
    • 컨테이너 명령을 설정합니다.
  3. Containerfile 을 사용하여 galaxy -buggy 라는 새 컨테이너 이미지를 빌드합니다.

    # podman build -t moon-buggy .
  4. 선택 사항: 모든 이미지를 나열합니다.

    # podman images
    REPOSITORY                  TAG      IMAGE ID      CREATED        SIZE
    localhost/moon-buggy  latest  c97c58abb564  13 seconds ago  1.67 GB
    registry.access.redhat.com/ubi8/ubi latest 4199acc83c6a  132seconds ago 213 MB
  5. war -buggy 컨테이너를 기반으로 새 컨테이너를 실행합니다.

    # podman run -it --name moon moon-buggy
  6. 선택 사항: bootstrap -buggy 이미지에 태그를 지정합니다.

    # podman tag moon-buggy registry.example.com/moon-buggy
  7. 선택 사항: registries -buggy 이미지를 레지스트리로 푸시합니다.

    # podman push registry.example.com/moon-buggy