5.2. 이미지 태그 지정

다음 섹션에서는 OpenShift Container Platform 이미지 스트림과 해당 태그로 작업하기 위해 컨테이너 이미지 컨텍스트에서 이미지 태그를 사용하는 데 필요한 개요 및 지침을 제공합니다.

5.2.1. 이미지 태그

이미지 태그는 리포지터리의 컨테이너 이미지에 적용되는 레이블로, 이미지 스트림에서 특정 이미지를 다른 이미지와 구별하는 역할을 합니다. 일반적으로 태그는 일종의 버전 번호를 나타냅니다. 예를 들어 다음에서는 :v3.11.59-2가 태그입니다.

registry.access.redhat.com/openshift3/jenkins-2-rhel7:v3.11.59-2

이미지에 태그를 더 추가할 수 있습니다. 예를 들어 이미지에 :v3.11.59-2:latest 태그가 할당될 수 있습니다.

OpenShift Container Platform은 docker tag 명령과 유사하지만 이미지가 아닌 이미지 스트림에서 작동하는 oc tag 명령을 제공합니다.

5.2.2. 이미지 태그 규칙

이미지는 시간이 지남에 따라 개선되며 해당 태그를 사용하여 이러한 개선을 반영합니다. 일반적으로 이미지 태그는 항상 빌드된 최신 이미지를 가리킵니다.

v2.0.1-may-2019와 같이 태그 이름에 너무 많은 정보가 포함되어 있으면 태그는 이미지의 한 버전만 가리키며 업데이트되지 않습니다. 기본 이미지 정리 옵션을 사용하는 경우 이러한 이미지는 절대 제거되지 않습니다. 크기가 매우 큰 클러스터에서는 모든 수정된 이미지에 대한 새로운 태그 생성 스키마가 아주 오래된 이미지에 대한 초과 태그 메타데이터로 etcd 데이터 저장소를 채울 수 있습니다.

태그 이름이 v2.0이면 이미지가 수정될 가능성이 높습니다. 그러면 태그 기록이 길어지고, 따라서 이미지 정리기가 오래되고 사용되지 않는 이미지를 제거할 가능성이 높습니다.

태그 이름 지정 규칙은 사용자가 결정하지만 아래에서 <image_name>:<image_tag> 형식으로 된 몇 가지 예를 볼 수 있습니다.

표 5.1. 이미지 태그 이름 지정 규칙

설명

버전

myimage:v2.0.1

아키텍처

myimage:v2.0-x86_64

기본 이미지

myimage:v1.2-centos7

최신(불안정한 상태가 될 수 있음)

myimage:latest

안정된 최신 상태

myimage:stable

태그 이름에 날짜가 필요한 경우 오래되고 지원되지 않는 이미지와 istags를 정기적으로 검사하여 제거하십시오. 그러지 않으면 오래된 이미지 유지로 인해 리소스 사용량이 증가할 수 있습니다.

5.2.3. 이미지 스트림에 태그 추가

OpenShift Container Platform의 이미지 스트림은 태그로 식별되는 0개 이상의 컨테이너 이미지로 구성됩니다.

사용할 수 있는 태그 유형은 다양합니다. 기본 동작에서는 시간의 특정 이미지를 가리키는 permanent 태그를 사용합니다. permanent 태그가 사용 중이고 소스가 변경되는 경우 대상에 대해 태그가 변경되지 않습니다.

tracking 태그는 소스 태그를 가져오는 동안 대상 태그의 메타데이터가 업데이트되었음을 나타냅니다.

절차

  • oc tag 명령을 사용하여 이미지 스트림에 태그를 추가할 수 있습니다.

    $ oc tag <source> <destination>

    예를 들어 ruby 이미지 스트림 static-2.0 태그가 항상 ruby 이미지 스트림 2.0 태그의 현재 이미지를 참조하도록 구성하려면 다음을 사용합니다.

    $ oc tag ruby:2.0 ruby:static-2.0

    이 명령을 사용하면 ruby 이미지 스트림에 static-2.0이라는 새 이미지 스트림 태그가 생성됩니다. 새 태그는 oc tag가 실행될 때 ruby:2.0 이미지 스트림 태그가 가리키는 이미지 ID를 직접 참조하며 태그가 가리키는 이미지는 변경되지 않습니다.

  • 소스 태그가 변경될 때 대상 태그가 업데이트되도록 하려면 --alias=true 플래그를 사용합니다.

    $ oc tag --alias=true <source> <destination>
참고

영구 별칭(예: latest 또는 stable)을 생성하려면 추적 태그를 사용하십시오. 이 태그는 단일 이미지 스트림 내에서만 제대로 작동합니다. 이미지 스트림 간 별칭을 생성하려고 하면 오류가 발생합니다.

  • --scheduled=true 플래그를 추가하여 대상 태그를 정기적으로 새로 고치거나 다시 가져오도록 할 수 있습니다. 기간은 시스템 수준에서 전역적으로 구성됩니다.
  • --reference 플래그는 가져오지 않는 이미지 스트림 태그를 생성합니다. 태그는 영구적으로 소스 위치를 가리킵니다.

    OpenShift Container Platform이 항상 통합 레지스트리에서 태그된 이미지를 가져오도록 지정하려면 --reference-policy=local을 사용하십시오. 레지스트리는 가져오기 기능을 사용하여 클라이언트에 이미지를 제공합니다. 기본적으로 이미지 Blob은 레지스트리에 의해 로컬로 미러링됩니다. 따라서 다음에 필요할 때 더 빨리 가져올 수 있습니다. 이 플래그를 사용하면 이미지 스트림에 비보안 주석이 있거나 태그에 비보안 가져오기 정책이 있는 한 컨테이너 런타임에 --insecure-registry를 제공할 필요 없이 비보안 레지스트리에서 가져올 수도 있습니다.

5.2.4. 이미지 스트림에서 태그 제거

이미지 스트림에서 태그를 제거할 수 있습니다.

절차

  • 이미지 스트림에서 태그를 완전히 제거하려면 다음을 실행합니다.

    $ oc delete istag/ruby:latest

    또는 다음을 수행합니다.

    $ oc tag -d ruby:latest

5.2.5. 이미지 스트림의 이미지 참조

태그를 사용하면 다음 참조 유형이 사용된 이미지 스트림의 이미지를 참조할 수 있습니다.

표 5.2. 이미지 스트림 참조 유형

참조 유형설명

ImageStreamTag

ImageStreamTag는 지정된 이미지 스트림 및 태그의 이미지를 참조하거나 검색하는 데 사용됩니다.

ImageStreamImage

ImageStreamImage는 지정된 이미지 스트림 및 이미지 sha ID의 이미지를 참조하거나 검색하는 데 사용됩니다.

DockerImage

DockerImage는 지정된 외부 레지스트리의 이미지를 참조하거나 검색하는 데 사용됩니다. 해당 이름에 표준 Docker pull specification을 사용합니다.

이미지 스트림 정의 예를 보면 ImageStreamTag 정의와 DockerImage에 대한 참조는 포함되어 있으나 ImageStreamImage와 관련된 항목은 포함되어 있지 않음을 알 수 있습니다.

이미지 스트림으로 이미지를 가져오거나 태그하는 경우 ImageStreamImage 오브젝트가 OpenShift Container Platform에서 자동으로 생성되기 때문입니다. 이미지 스트림을 생성하는 데 사용하는 이미지 스트림 정의에서는 ImageStreamImage 오브젝트를 명시적으로 정의할 필요가 없습니다.

프로세스

  • 지정된 이미지 스트림 및 태그의 이미지를 참조하려면 ImageStreamTag를 사용합니다.

    <image_stream_name>:<tag>
  • 지정된 이미지 스트림 및 이미지 sha ID의 이미지를 참조하려면 ImageStreamImage를 사용합니다.

    <image_stream_name>@<id>

    <id>는 다이제스트라고도 하는 특정 이미지의 변경 불가능한 식별자입니다.

  • 지정된 외부 레지스트리의 이미지를 참조하거나 검색하려면 DockerImage를 사용합니다.

    openshift/ruby-20-centos7:2.0
    참고

    태그가 지정되지 않은 경우 latest 태그가 사용된 것으로 가정합니다.

    다음과 같은 타사 레지스트리를 참조할 수도 있습니다.

    registry.redhat.io/rhel7:latest

    또는 다이제스트가 있는 이미지도 참조할 수 있습니다.

    centos/ruby-22-centos7@sha256:3a335d7d8a452970c5b4054ad7118ff134b3a6b50a2bb6d0c07c746e8986b28e