5.4. 컨테이너 빌드
Buildah는 Red Hat Enterprise Linux에서 컨테이너를 빌드하는 기본 툴이며 Podman과 함께 사용하여 빌드하는 컨테이너를 관리하고 실행할 수 있습니다.
사전 요구 사항
-
container-toolsmeta-package가 설치되어 있습니다.
절차
컨테이너 툴을 설치합니다. 필요한 컨테이너 도구가 RHEL 시스템에 설치되어 있는지 확인합니다. container-tools 모듈은 Buildah, Podman, Skopeo를 제공합니다.
$ sudo dnf install container-tools컨테이너 파일을 생성합니다. Containerfile은 컨테이너 이미지 빌드에 대한 지침을 정의합니다. 이 파일은 기본 이미지, 설치할 모든 소프트웨어, 적용할 구성 및 실행할 애플리케이션을 지정합니다. 예를 들면 다음과 같습니다.
FROM registry.redhat.io/ubi9/ubi9-minimal RUN microdnf -y update && microdnf -y install COPY index.html /var/www/html/ EXPOSE 80 CMD ["httpd", "-DFOREGROUND"]Buildah를 사용하여 컨테이너 이미지를 빌드합니다. Buildah
bud(또는podman build)를 사용하여 컨테이너 파일이 포함된 디렉터리로 이동한 후 이미지를 빌드합니다.$ cd /<path_to_container_file> $ buildah bud -t <your_image_name>:_<tag>_-
your_image_name: 이미지 이름입니다. -
태그: 이미지의 태그(예: latest, 1.0)입니다. -
.: Containerfile이 현재 디렉터리에 있음을 나타냅니다.
-
컨테이너를 실행합니다. 이미지를 빌드한 후
podman run명령을 사용하여 컨테이너에서 컨테이너를 실행할 수 있습니다.$ podman run -d -p 8080:80 my-web-app-
-d: 컨테이너를 분리 모드로 실행합니다(백업에서). -
-p 8080:80: 호스트의 8080 포트를 컨테이너 내부의 포트 80에 매핑합니다. -
my-web-app: 실행할 이미지의 이름입니다.
-
컨테이너 빌드의 heredocs 구문
Containerfile에서 heredoc 구문을 Red Hat Enterprise Linux 기본 이미지와 함께 사용하면 BuildKit 을 활성화할 수 있습니다. 명령에 heredoc 구문이 포함된 경우 Containerfile은 행에 동일한 명령의 일부로 heredoc 구분 기호만 포함될 때까지 다음 행을 고려합니다. heredocs 를 사용하여 Containerfile의 RUN 또는 COPY 와 같은 명령어 내에 여러 줄 문자열을 직접 포함할 수 있습니다. 이는 RHEL 기반 이미지에서 특히 유용합니다. 간단한 작업을 위해 별도의 스크립트 파일을 생성할 필요가 없어 가독성과 유지 관리가 개선되기 때문입니다.
예를 들어 일반적인 사용 사례는 단일 RUN 명령에서 여러 쉘 명령을 실행하여 단일 이미지 계층을 생성하여 & ;& \ 구문을 방지합니다.
# syntax=container/containerfile:1.4
FROM registry.redhat.io/ubi9/ubi-minimal
# Use a heredoc to perform a multi-line RUN command:
RUN <<EOF
microdnf -y update
microdnf -y install nginx
microdnf clean all
echo "Nginx installed and packages updated"
EOF
-
RUN <<EOF: <여기doc의 시작 신호 및EOF는 사용자 정의 구분 기호입니다. -
<
EOF와 최종EOF사이의 줄은 쉘에 의해 실행되는 단일 스크립트로 취급됩니다. -
전체 블록은 단일
RUN명령이며 더 효율적이고 읽기 쉽습니다.