5.4. 컨테이너 빌드
애플리케이션 및 필수 종속 항목을 하나의 이식 가능한 단위로 패키징하려면 Red Hat Enterprise Linux에서 새 컨테이너를 빌드할 수 있습니다. Containerfile에 이미지 지침을 정의하여 소프트웨어 설치 및 구성을 자동화합니다.
사전 요구 사항
-
container-toolsmeta-package가 설치되어 있습니다.
프로세스
컨테이너 툴 설치: RHEL 시스템에 필요한 컨테이너 도구가 설치되어 있는지 확인합니다. container-tools 모듈은 Buildah, Podman, Skopeo를 제공합니다.
$ sudo dnf install container-toolsContainerfile 생성: Containerfile은 컨테이너 이미지 빌드 지침을 정의합니다. 이 파일은 기본 이미지, 설치할 모든 소프트웨어, 적용할 구성 및 실행할 애플리케이션을 지정합니다. 예를 들면 다음과 같습니다.
FROM registry.redhat.io/ubi10/ubi-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: 이미지의 이름입니다. -
tag: 이미지의 태그(예: 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/ubi10/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명령이며 더 효율적이고 읽기 쉽습니다.