검색

7장. UBI 컨테이너에 소프트웨어 추가

download PDF

Red Hat UBI(Universal Base Images)는 RHEL 콘텐츠 서브 세트에서 빌드됩니다. UBI는 또한 UBI와 함께 사용하도록 자유롭게 설치할 수 있는 RHEL 패키지의 하위 집합을 제공합니다. 실행 중인 컨테이너에 소프트웨어를 추가하거나 업데이트하려면 RPM 패키지 및 업데이트를 포함하는 yum 리포지토리를 사용할 수 있습니다. UBI는 Python, Perl, Node.js, Ruby 등과 같은 사전 빌드된 언어 런타임 컨테이너 이미지 세트를 제공합니다.

UBI 리포지토리에서 실행 중인 UBI 컨테이너에 패키지를 추가하려면 다음을 수행합니다.

  • UBI init 및 UBI 표준 이미지에서 yum 명령을 사용합니다.
  • UBI 최소 이미지에서 microdnf 명령을 사용하십시오.
참고

실행 중인 컨테이너에서 직접 소프트웨어 패키지를 설치하고 작업하면 패키지가 일시적으로 추가됩니다. 변경 사항은 컨테이너 이미지에 저장되지 않습니다. 패키지를 영구적으로 변경하려면 Buildah를 사용하여 컨테이너 파일에서 이미지 빌드 섹션을 참조하십시오.

참고

UBI 컨테이너에 소프트웨어를 추가하면 서브스크립션된 RHEL 호스트 또는 서브스크립션 취소(또는 RHEL이 아닌) 시스템에서 UBI를 업데이트하는 절차가 다릅니다.

7.1. UBI init 이미지 사용

컨테이너가 호스트 시스템에서 실행될 때 systemd 서비스(/sbin/init)에 의해 자동으로 시작되도록 웹 서버(httpd)를 설치하고 구성하는 Containerfile 을 사용하여 컨테이너를 빌드할 수 있습니다. podman build 명령은 하나 이상의 Containerfiles 및 지정된 빌드 컨텍스트 디렉터리에 있는 명령을 사용하여 이미지를 빌드합니다. 컨텍스트 디렉터리는 아카이브, Git 리포지토리 또는 Containerfile 의 URL로 지정할 수 있습니다. 컨텍스트 디렉터리가 지정되지 않은 경우 현재 작업 디렉터리는 빌드 컨텍스트로 간주되며 Containerfile 을 포함해야 합니다. --file 옵션을 사용하여 Containerfile 파일을 지정할 수도 있습니다.

사전 요구 사항

  • container-tools 모듈이 설치되어 있습니다.

절차

  1. 새 디렉터리에 다음 콘텐츠를 사용하여 Containerfile 을 생성합니다.

    FROM registry.access.redhat.com/ubi8/ubi-init
    RUN yum -y install httpd; yum clean all; systemctl enable httpd;
    RUN echo "Successful Web Server Test" > /var/www/html/index.html
    RUN mkdir /etc/systemd/system/httpd.service.d/; echo -e '[Service]\nRestart=always' > /etc/systemd/system/httpd.service.d/httpd.conf
    EXPOSE 80
    CMD [ "/sbin/init" ]

    Containerfilehttpd 패키지를 설치하고, 부팅 시 httpd 서비스가 시작되고, 테스트 파일(index.html)을 생성하고, 웹 서버를 호스트(포트 80)에 노출하며, 컨테이너가 시작될 때 systemd init 서비스(/sbin/init)를 시작합니다.

  2. 컨테이너를 빌드합니다.

    # podman build --format=docker -t mysysd .
  3. 선택 사항: 시스템에서 systemd 를 사용하여 컨테이너를 실행하고 SELinux가 활성화된 경우 container_manage_cgroup 부울 변수를 설정해야 합니다.

    # setsebool -P container_manage_cgroup 1
  4. 이름이 mysysd_run 인 컨테이너를 실행합니다.

    # podman run -d --name=mysysd_run -p 80:80 mysysd

    mysysd 이미지는 mysysd_run 컨테이너에서 호스트 시스템의 포트 80으로 노출된 컨테이너의 포트 80을 데몬 프로세스로 실행합니다.

    참고

    rootless 모드에서는 호스트 포트 번호 >= 1024를 선택해야 합니다. 예를 들면 다음과 같습니다.

    $ podman run -d --name=mysysd -p 8081:80 mysysd

    포트 번호 < 1024를 사용하려면 net.ipv4.ip_unprivileged_port_start 변수를 수정해야 합니다.

    # sysctl net.ipv4.ip_unprivileged_port_start=80
  5. 컨테이너가 실행 중인지 확인합니다.

    # podman ps
    a282b0c2ad3d  localhost/mysysd:latest  /sbin/init  15 seconds ago  Up 14 seconds ago  0.0.0.0:80->80/tcp  mysysd_run
  6. 웹 서버를 테스트합니다.

    # curl localhost/index.html
    Successful Web Server Test

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.