Oracle Linux에서 Podman을 사용하여 다중 플랫폼 컨테이너 이미지 빌드

소개

이 데모는 Oracle Linux에서 Podman을 사용하여 다중 플랫폼 컨테이너 이미지를 생성하는 방법을 보여줍니다.

목표

이 자습서에서는 다음을 수행하는 방법에 대해 알아봅니다.

필요 조건

Podman 서버 배치

  1. Oracle Linux 컴퓨트 인스턴스를 생성합니다.

    구성이 x86_64 구조를 사용하는 경우 기본 이미지와 구성을 사용할 수 있습니다. 퍼블릭 서브넷을 선택하거나 생성하고 IPv4 주소를 지정합니다.

    이 단계에서는 항상 Free Tier에서 제공되는 마이크로 구성 사용을 지원합니다.

  2. 인스턴스가 실행되고 나면 인스턴스에 로그인합니다.

    ssh -i <SSH_KEY> opc@<IP_ADDRESS_OF_PODMAN_SERVER_INSTANCE>
    

    설명:

    • <SSH_KEY>은 컴퓨트 인스턴스를 프로비전할 때 사용되는 SSH 키의 프라이빗 부분입니다. 예: ~/.ssh/id_rsa
    • <IP_ADDRESS_OF_PODMAN_SERVER_INSTANCE>은 컴퓨트 인스턴스의 퍼블릭 IP 주소입니다.

원격 액세스를 위한 Podman 설치 및 구성

이러한 명령은 컴퓨트 인스턴스 또는 sudo 액세스 권한이 있는 모든 사용자에서 기본 opc 사용자 계정으로 실행할 수 있습니다.

  1. 모든 최신 보안 수정 및 정오표로 시스템을 업데이트합니다.

    sudo dnf -y update
    
  2. Podman 패키지 또는 모듈을 설치합니다.

    Oracle Linux 8:

    sudo dnf module install -y container-tools:ol8
    

    Oracle Linux 9 및 Oracle Linux 10:

    sudo dnf install -y container-tools
    

    컨테이너 도구 모듈 또는 패키지는 skopeo 및 buildah를 포함한 podman 및 기타 컨테이너 도구를 설치합니다. 하나의 필수 패키지는 container-selinux이며, 이를 통해 podman를 SELinux 사용 시스템에서 비루트 사용자로 실행할 수 있으며, Oracle Linux는 기본적으로 사용으로 설정됩니다.

  3. Podman 소켓을 사용으로 설정합니다.

    systemd는 해당 소켓에서 수신하고 원격 클라이언트가 활성화할 때마다 Podman 인스턴스를 실행합니다. 연결이 닫히면 systemd가 Podman 인스턴스를 종료합니다.

    참고: 루트리스 모드에서 원격 Podman 액세스를 구성할 수 있지만 이 자습서의 범위를 벗어납니다.

    sudo systemctl enable --now podman.socket
    
  4. 소켓의 경로를 확인합니다.

    sudo systemctl status podman.socket
    

    출력은 소켓 수신을 보여주고 해당 위치는 /run/podman/podman.sock에 있습니다.

    즉, Podman 서버 인스턴스에 로그온하여 이 자습서의 뒷부분에서 SSH 암호 없는 구성을 수행합니다.

Oracle Cloud 개발자 인스턴스 배치

Oracle Ampere A1 Compute는 Oracle Cloud Infrastructure(OCI) 및 Ampere Altra Arm 프로세서를 결합한 고성능 플랫폼입니다. 결정적인 성능, 검증된 보안, 널리 사용되는 도구 및 환경(OS, Kubernetes - OKE, SDK 및 CLI)을 포함하는 광범위한 개발자 에코시스템을 제공합니다.

OCI는 Git, Node.js, Java, GraalVM 등 널리 사용되는 모든 개발자 툴이 설치된 Oracle Cloud Developer Image를 플랫폼 이미지로 나열합니다.

  1. Oracle Cloud Developer 컴퓨트 인스턴스를 생성합니다.

    Oracle Cloud Developer 이미지 및 Ampere 구성을 선택합니다. Podman 서버 인스턴스와 동일한 퍼블릭 서브넷을 선택하고 IPv4 주소를 지정합니다.

  2. 송신 규칙 또는 SSH 포트 전달을 사용하도록 결정합니다.

    두 가지 방법으로 생성할 데모 웹 애플리케이션에 액세스할 수 있습니다. 둘 다 사용으로 설정할 수 있지만 둘 중 하나만 선택해야 합니다.

(선택 사항) 수신 규칙 만들기

수신 규칙 사용은 2단계 프로세스입니다. 이 옵션은 인터넷에서 서브넷에 대한 액세스를 열고 재부팅 후에도 지정된 포트의 인스턴스에 대한 액세스 권한을 계속 부여합니다. 먼저 OCI 내에서 규칙을 생성한 다음 Oracle Linux 인스턴스에서 firewalld 내의 포트를 열어야 합니다.

  1. 퍼블릭 서브넷에 수신 규칙을 추가합니다.

    규칙은 0.0.0.0/0에서 포트 5808/tcp의 인바운드 트래픽을 허용해야 합니다. 규칙은 생성 후 즉시 적용됩니다.

  2. 새 터미널을 열고 SSH를 통해 Oracle Cloud Developer 인스턴스에 접속합니다.

    ssh -i <SSH_KEY> opc@<IP_ADDRESS_OF_ORACLE_CLOUD_DEVELOPER_INSTANCE>
    
  3. 데모 웹 애플리케이션에 대한 접근 권한을 추가합니다.

    sudo firewall-cmd --permanent --add-port=5808/tcp
    sudo firewall-cmd --reload
    
  4. 방화벽에 대한 변경 사항을 확인합니다.

    sudo firewall-cmd --list-all
    

    출력에는 사용 가능한 ports: 5808/tcp가 표시됩니다.

SSH 포트 전송 사용

  1. 터미널을 열고 SSH를 통해 Oracle Cloud Developer 인스턴스에 연결합니다.

    -L 옵션은 로컬 전달을 사용으로 설정합니다. 그러면 로컬 포트가 열리고 SSH 터널을 통해 원격 데모 웹 응용 프로그램에 연결됩니다.

    ssh -L 5808:localhost:5808 -i <SSH_KEY> opc@<IP_ADDRESS_OF_ORACLE_CLOUD_DEVELOPER_INSTANCE>
    

웹 애플리케이션에 대한 컨테이너 이미지를 생성하고 로컬로 실행

  1. 데모 응용 프로그램의 Git 저장소를 복제합니다.

    이 자습서에서는 Node.js 기반 서버 모니터링 웹 앱인 RasDash를 배포합니다.

    git clone https://github.com/sykeben/RasDash.git
    
  2. 소스 코드 디렉토리로 변경합니다.

    cd  ~/RasDash
    
  3. 컨테이너 파일을 생성하여 웹 애플리케이션을 빌드하고 서비스합니다.

    cat << EOF > Containerfile
    FROM ghcr.io/oracle/oraclelinux8-nodejs:14
    COPY . /app
    WORKDIR /app
    RUN npm install && \
      npm test
    CMD ["/usr/bin/node", "app.js", "service"]
    EOF
    
  4. 로컬 인스턴스에서 이미지를 빌드하고 실행합니다.

    podman를 사용하여 로컬에서 컨테이너 이미지를 빌드하고 애플리케이션의 버전 및 플랫폼 아키텍처로 이미지에 태그를 지정합니다. 이 정보는 나중에 각 플랫폼 이미지를 OCIR(Oracle Cloud Infrastructure Registry)로 푸시하고 두 플랫폼 이미지의 매니페스트를 생성할 때 유용합니다.

    sudo podman build --format docker --tag rasdash:0.3.4-arm64 .
    

    최종 라인은 애플리케이션 빌드에 고유합니다.

  5. 이미지를 사용하여 컨테이너를 실행합니다.

    sudo podman run --rm --init -detach --name rasdash --publish 5808:5808 localhost/rasdash:0.3.4-arm64
    

    Podman이 반환하는 다이제스트는 각 컨테이너 인스턴스에 대해 고유합니다.

  6. 실행 중인 컨테이너를 확인합니다.

    sudo podman ps
    

    출력에는 컨테이너가 Up로 표시되고 실행됩니다.

  7. 컨테이너 로그를 확인합니다.

    sudo podman logs rasdash
    

    출력에는 [STATE] Server started가 표시됩니다.

  8. 웹 응용 프로그램을 확인합니다.

    로컬 시스템에서 브라우저를 열고 http://localhost:5808로 이동합니다. 수신 및 방화벽 규칙을 생성한 경우 localhost 대신 Oracle Cloud Developer 인스턴스의 퍼블릭 IP 주소를 사용할 수 있습니다.

    주: OCI의 가상 인스턴스는 물리적 하드웨어 데이터에 액세스할 수 없으므로 CPU 온도 측정 단위는 -1를 표시합니다.

  9. 실행 중인 컨테이너를 정지합니다.

    sudo podman stop rasdash
    

인스턴스 간에 암호 없는 SSH 구성

Podman은 보안을 위해 인스턴스 간에 SSH를 사용하여 통신합니다. 보다 원활한 환경을 위해 Cloud Developer 인스턴스에서 공개/개인 키 쌍을 생성하고 이를 Podman Remote 서버로 복사하면 비밀번호를 입력하지 않고도 개발자 인스턴스에서 SSH를 사용할 수 있습니다.

  1. Oracle Cloud Developer 인스턴스에서 퍼블릭/프라이빗 키 쌍을 생성합니다.

    ssh-keygen -b 4096 -f ~/.ssh/id_rsa -q -N ""
    
  2. 공개 키 파일의 내용을 복사합니다.

    cat ~/.ssh/id_rsa.pub
    

    cat 명령에서 출력을 선택하고 복사합니다.

  3. Podman 서버 인스턴스로 전환합니다.

  4. vi에서 파일을 엽니다.

    vi ~/.ssh/authorized_keys
    

    공용 키 컨텐츠를 권한이 부여된 키 파일에 붙여 넣습니다.

    파일을 저장하고 닫습니다.

  5. SSH 디렉토리 및 파일에 올바른 파일 시스템 권한을 적용해야 합니다.

    chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
    
  6. Cloud Developer 인스턴스로 전환합니다.

  7. 비밀번호 없이 Podman 서버에 opc 사용자로 SSH를 지정할 수 있는지 테스트합니다.

    주: 문제가 있는 경우 다음 설명서를 참조하십시오.

    ssh opc@<IP_ADDRESS_OF_PODMAN_SERVER_INSTANCE>
    

    비밀번호 없이 접속할 수 있는지 확인한 후에는 Oracle Cloud Developer 인스턴스와 Podman 서버 간에 SSH 세션을 exit해야 합니다.

  8. Podman 서버 인스턴스로 전환합니다.

  9. 루트 사용자의 권한이 부여된 키 파일을 바꿉니다.

    cat /home/opc/.ssh/authorized_keys | sudo tee /root/.ssh/authorized_keys
    
  10. Cloud Developer 인스턴스로 전환합니다.

  11. Cloud Developer 인스턴스의 opc 사용자로 Podman 서버의 root 사용자로 SSH할 수 있는지 테스트합니다.

    ssh root@<IP_ADDRESS_OF_PODMAN_SERVER_INSTANCE>
    

    루트 사용자로 Podman 서버에 대한 SSH 연결을 성공적으로 테스트한 후 세션을 exit할 수 있습니다.

Podman 서버에 대한 시스템 접속 생성

  1. Podman 서버에서 실행 중인 Podman 서비스와 Oracle Cloud Developer 인스턴스 간에 Podman 시스템 접속을 생성합니다.

    sudo podman system connection add --identity ~/.ssh/id_rsa amd64 ssh://root@<IP_ADDRESS_OF_PODMAN_SERVER_INSTANCE>/run/podman/podman.sock
    

    위 명령에서 <IP_ADDRESS_OF_PODMAN_SERVER_INSTANCE>을 Podman 서버의 IP 주소 또는 호스트 이름으로 바꿔야 합니다.

  2. 연결이 성공적으로 추가되었는지 확인합니다.

    sudo podman system connection list
    

    출력에는 Default 값이 true로 설정된 amd64 연결이 표시됩니다. Podman은 시스템에 여러 연결이 구성된 경우 이 연결을 사용합니다.

원격 Podman 서버에 이미지 빌드

이제 podman --remote를 사용하여 Oracle Cloud Developer 인스턴스에서 원격 Podman 서버 인스턴스로 명령을 전송할 수 있어야 합니다.

  1. Podman 서버의 세부정보를 가져와 테스트합니다.

    sudo podman --remote info
    

    구조는 arm64로 보고해야 합니다.

  2. 원격 이미지를 작성합니다.

    Podman은 전체 컨텍스트를 원격 인스턴스에 자동으로 복사합니다.

    cd ~/RasDash
    sudo podman --remote build --format docker --tag rasdash:0.3.4-amd64 .
    
  3. 원격 Podman 서버에 이미지가 존재하는지 확인합니다.

    참고: Podman은 생성하는 이미지를 다시 클라이언트 시스템에 복사하지 않으므로 sudo podman images를 실행하면 이미지가 나열되지 않습니다. 그러나 원격 시스템에서 사용할 수 있습니다.

    sudo podman --remote images
    

    출력 예:

    REPOSITORY                          TAG          IMAGE ID      CREATED        SIZE
    localhost/rasdash                   0.3.4-amd64  3a1b9755ebdd  8 seconds ago  439 MB
    ...
    
  4. 로컬 이미지 구조를 확인합니다.

    특정 플랫폼 및 구조에 대해 각 이미지가 빌드되었는지 검증하는 최종 방법은 jq를 사용하여 각 이미지의 매니페스트에 있는 Architecture 필드의 값을 추출합니다.

    sudo podman inspect rasdash:0.3.4-arm64 | jq -r '.[] | .Architecture'
    

    로컬 이미지는 해당 구조를 arm64로 보고합니다.

  5. 원격 이미지를 확인합니다.

    sudo podman --remote inspect rasdash:0.3.4-amd64 | jq -r '.[] | .Architecture'
    

    원격 이미지는 amd64로 보고됩니다.

컨테이너 레지스트리 Repository 생성

Oracle Cloud Infrastructure 콘솔에서 컨테이너 레지스트리 섹션으로 이동하여 다중 플랫폼 애플리케이션을 저장할 저장소를 생성합니다.

자세한 내용은 Oracle Cloud Infrastructure 문서의 저장소 생성을 참조하십시오.

  1. 전용 demo/rasdash 저장소를 생성합니다.

    저장소 생성

  2. 새 저장소의 세부정보를 검토합니다.

    저장소 세부정보

컨테이너 레지스트리 저장소 인증서 수집

다음 표에서는 이 자습서의 후속 단계에서 사용되는 예제 값을 제공합니다. iad 예는 미국 동부(애슈번) 지역의 지역 키입니다. 지역이 독일 중부(프랑크푸르트)인 경우 지역 키는 fra입니다. 사용 가능한 영역 키를 나열하는 전체 테이블은 지역 및 가용성 도메인 설명서를 참조하십시오.

레지스트리 데이터 튜토리얼 위치 표시자 참고
REGISTRY_NAMESPACE gse00015915 저장소 정보 패널에 "이름 공간"으로 표시됩니다.
REPOSITORY_NAME demo/rasdash 컴파트먼트 이름 아래에 표시됩니다.
OCIR_INSTANCE iad.ocir.io <region>.ocir.io 사용

필요한 경우 Pushing Images Using the Docker CLI을 참조하십시오. 이 절차에서는 CLI를 사용하여 이미지를 컨테이너 레지스트리에 푸시하는 데 필요한 로그인 프로세스에 대해 설명합니다.

  1. 사용자 이름을 가져옵니다.

    컨테이너 레지스트리에 로그인하려면 사용자 이름과 인증 토큰이 필요합니다. 사용자 이름을 가져오려면 Oracle Cloud Infrastructure 콘솔의 오른쪽 상단 모서리에 있는 프로파일 메뉴(사용자 메뉴 아이콘)를 열고 내 프로파일을 눌러 세부정보를 확인합니다.

    콘솔에 표시된 tenancy-namespace를 포함하여 사용자 이름을 복사하여 저장합니다.

    user

  2. 인증 토큰 생성.

    콘솔에서 내 프로파일 페이지를 아래로 스크롤하고 리소스 아래에서 인증 토큰을 선택합니다.

    토큰 생성 단추를 선택하고 새 토큰에 대한 demo 설명을 제공합니다.

    생성 토큰

    토큰을 생성한 후 복사하여 저장해야 합니다.

    복사 토큰

컨테이너 레지스트리 저장소에 로그인

다음 표에서는 이 자습서의 후속 단계에서 사용되는 예제 값을 제공합니다.

사용자 이름 튜토리얼 위치 표시자
REGISTRY_NAMESPACE gse00015915
USERNAME luna.user@e1ab5742-7e30-463a-9017-0b48fa54197e
토큰 ]y#W_iS9GKC}4l1Gq9Fn
OCIR_INSTANCE iad.ocir.io
  1. podman login 명령에서 사용할 환경 변수를 생성합니다.

    사용자 이름과 토큰을 사용하여 USERTOKEN 환경 변수를 생성합니다. 사용자 이름의 일부로 <REGISTRY_NAMESPACE>를 포함해야 합니다.

    export OCIR_INSTANCE="iad.ocir.io"
    export OCIR_NAMESPACE="gse00015915"
    export OCI_USERNAME="luna.user@e1ab5742-7e30-463a-9017-0b48fa54197e"
    export OCIR_USERNAME="$OCIR_NAMESPACE/$OCI_USERNAME"
    export OCI_USER_TOKEN="]y#W_iS9GKC}4l1Gq9Fn"
    
  2. 컨테이너 레지스트리에 로그인합니다.

    sudo -E podman login -u $OCIR_USERNAME -p $OCIR_USER_TOKEN $OCIR_INSTANCE
    

    원격 인스턴스는 클라이언트 인스턴스에서 인증 자격 증명을 자동으로 상속합니다.

플랫폼 이미지 푸시

이 예에서 플랫폼별 태그가 있는 최종 저장소 URI는 다음과 같습니다.

Podman은 이미지가 사전에 태그를 지정할 필요 없이 로컬 이미지를 원격 레지스트리에 푸시할 수 있습니다.

  1. 로컬 rasdash/0.3.4-arm64 이미지를 푸시합니다.

    sudo -E podman push rasdash:0.3.4-arm64 docker://$OCIR_INSTANCE/$OCIR_NAMESPACE/demo/rasdash:0.3.4-arm64
    
  2. 원격 rasdash:0.3.4-amd64 이미지를 푸시합니다.

    sudo -E podman --remote push rasdash:0.3.4-amd64 docker://$OCIR_INSTANCE/$OCIR_NAMESPACE/demo/rasdash:0.3.4-amd64
    
  3. 컨테이너 레지스트리 콘솔을 확인합니다.

    주: 원격 이미지를 푸시해도 로컬 출력이 생성되지 않습니다. rasdash:0.3.4-amd64 태그에 대한 컨테이너 레지스트리 콘솔을 검토하여 이미지를 성공적으로 푸시했는지 확인합니다.

    Container Registry 콘솔에 두 개의 이미지가 표시되어야 합니다.

    이미지

    0.3.4-amd64 이미지:

    이미지

    0.3.4-arm64 이미지:

    이미지

매니페스트 목록 만들기 및 컨테이너 레지스트리에 푸시

이제 두 개의 플랫폼 이미지가 있으므로 컨테이너 런타임에서 해당 플랫폼에 적합한 이미지를 선택할 수 있도록 매니페스트 목록을 생성해야 합니다. 이는 운영 체제와 아키텍처의 조합입니다.

대부분의 컨테이너 이미지는 Linux 기반이므로 사용자는 일반적으로 다중 플랫폼 이미지를 다중 아카이브 이미지라고 합니다. 그러나 Windows, macOS 및 Linux에서 실행할 수 있는 이미지를 단일 매니페스트로 결합할 수도 있습니다.

  1. 매니페스트를 생성하고 채웁니다.

    태그에 앱 버전만 사용하여 클라우드 개발자 인스턴스에 로컬 매니페스트 목록을 생성합니다.

    sudo podman manifest create rasdash:0.3.4
    

    이전과 마찬가지로 체크섬 출력은 만든 매니페스트에 고유하며 위와 일치하지 않습니다.

  2. 매니페스트 목록을 검사하여 사용 중인 mediaType 및 해당 멤버 이미지를 표시합니다.

    sudo podman manifest inspect rasdash:0.3.4
    
  3. 목록에 두 개의 플랫폼별 이미지를 추가합니다.

    sudo -E podman manifest add rasdash:0.3.4 docker://$OCIR_INSTANCE/$OCIR_NAMESPACE/demo/rasdash:0.3.4-arm64
    
    sudo -E podman manifest add rasdash:0.3.4 docker://$OCIR_INSTANCE/$OCIR_NAMESPACE/demo/rasdash:0.3.4-amd64
    
  4. 매니페스트 목록을 검사합니다.

    sudo podman manifest inspect rasdash:0.3.4
    

    이미지를 추가한 후 출력이 더 흥미로워집니다.

    최대 호환성을 위해 Podman이 기본적으로 사용할 Open Container Initiative Image Manifest Specification 대신 Docker Image Manifest V2, Schema 2(v2s2) 사양을 사용하여 이미지를 생성하도록 지시하는 각 빌드 명령에 --format docker 매개변수를 추가했습니다.

    Because the manifests are using the v2s2 specification, Podman uses the associated v2s2 Manifest List specification instead of the Open Container Initiative Image Index Specification.

    Oracle Engine for Kubernetes(OKE) 및 온프레미스 자체 호스팅 Kubernetes 배포판 등 클라우드 기반 관리형 Kubernetes 서비스에서 사용되는 기본 컨테이너 런타임은 두 사양 모두와 호환됩니다.

  5. 매니페스트 목록을 컨테이너 레지스트리에 푸시합니다.

    이제 매니페스트 목록을 만들었으므로 플랫폼별 이미지를 저장하는 동일한 컨테이너 레지스트리 저장소로 푸시할 수 있습니다.

    sudo -E podman manifest push --all rasdash:0.3.4 docker://$OCIR_INSTANCE/$OCIR_NAMESPACE/demo/rasdash:0.3.4
    

    이 작업은 이전에 플랫폼별 이미지를 푸시했기 때문에 빠른 작업입니다. 컨테이너 레지스트리는 매니페스트 목록을 기존 이미지에 링크합니다.

  6. 이미지를 로컬로 만들고 실행합니다.

    이제 플랫폼별 태그 대신 매니페스트 목록 태그를 사용하여 로컬 및 원격으로 이미지 인스턴스를 실행할 수 있습니다.

    sudo -E podman run --rm --detach --init --publish 5808:5808 $OCIR_INSTANCE/$OCIR_NAMESPACE/demo/rasdash:0.3.4
    
  7. 이미지를 원격으로 만들고 실행합니다.

    sudo -E podman --remote run --rm --detach --init --publish 5808:5808 $OCIR_INSTANCE/$OCIR_NAMESPACE/demo/rasdash:0.3.4
    

브라우저를 사용하여 이미지 테스트

인스턴스에 필요한 수신 규칙 및 firewalld 규칙을 생성했다고 가정합니다. 이 경우 브라우저를 열고 http://<PUBLIC_IP_ADDRESS_OF_ORACLE_CLOUD_DEVELOPER_INSTANCE>:5808http://<PUBLIC_IP_ADDRESS_OF_PODMAN_SERVER_INSTANCE>:5808로 이동하여 각 인스턴스에서 실행 중인 RasDash 웹 애플리케이션을 열 수 있어야 합니다.

그렇지 않으면 로컬 시스템에서 두 개의 터널을 만들어 이전과 같이 SSH 포트 전달을 사용할 수 있습니다.

  1. Oracle Cloud Developer 인스턴스에 대한 SSH 터널을 엽니다.

    ssh -L 5808:localhost:5808 -i <SSH_KEY> opc@<IP_ADDRESS_OF_ORACLE_CLOUD_DEVELOPER_INSTANCE>
    

    로컬 시스템에서 브라우저를 열고 http://localhost:5808로 이동하여 Cloud Development 인스턴스에서 arm64 기반 웹 애플리케이션을 확인합니다.

  2. SSH 터널 세션을 종료합니다.

  3. Podman 서버 인스턴스에 대한 SSH 터널을 엽니다.

    ssh -L 5808:localhost:5808 -i <SSH_KEY> opc@<IP_ADDRESS_OF_PODMAN_SERVER_INSTANCE>
    

    Podman Server 인스턴스에서 amd64 기반 웹 애플리케이션을 보려면 로컬 시스템에서 http://localhost:5808를 가리키는 브라우저를 새로 고치십시오.

다음 단계

이 자습서를 완료한 후에는 이제 전용 및 공용 OCIR 저장소에서 배치할 수 있는 이미지를 생성하는 방법을 알아야 합니다. Oracle Engine for Kubernetes(OKE) 또는 Oracle Cloud Native Environment와 같은 다양한 위치에서 이러한 이미지를 사용할 수 있습니다. Mac 또는 Windows용 Podman Desktop을 포함하여 Oracle Cloud Infrastructure 외부의 호스트에 이미지를 배치할 때 저장소가 퍼블릭인지 확인해야 합니다.

추가 학습 자원

docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.