7.11. 오프라인 및 Air-gapped 환경에서 이미지 모드 업데이트 배포


Red Hat Enterprise Linux의 이미지 모드를 사용하면 외부 스토리지를 사용하여 컨테이너 이미지를 전송하여 오프라인 및 Air-gapped 환경의 RHEL 시스템에 대한 업데이트를 배포할 수 있습니다.

호스트 머신에 이미지 모드 업데이트를 배포하려면 레지스트리에 액세스하여 업데이트를 받으려면 네트워크 연결이 필요합니다. 그러나 운영 환경에 하드웨어 사양, 엄격한 보안 요구 사항, 위치 기반 네트워크 제한 사항 또는 원격 액세스를 사용할 수 없는 경우 시스템 업데이트를 완전히 오프라인 및 무선 적용과 같은 특정 아키텍처 요소가 필요한 경우 시스템 업데이트를 수행할 수 있습니다.

참고

오프라인 업데이트는 많은 장치에서 사용할 때 시간이 오래 걸릴 수 있으며 업데이트를 배포하기 위해 현장 기능이 필요할 수 있습니다.

사전 요구 사항

  • 시스템에 만들려는 업데이트가 포함된 실행 중인 RHEL 시스템입니다.
  • 대상 하드웨어에 배포된 Red Hat Enterprise Linux 10이 있는 실행 중인 RHEL 시스템입니다.
  • container-tools meta-package가 설치되어 있습니다. meta-package 에는 Podman, Buildah, Skopeo와 같은 모든 컨테이너 툴이 포함되어 있습니다.
  • 레지스트리 또는 로컬에 저장된 컨테이너에 액세스합니다.
  • 컨테이너의 외부 스토리지 장치에는 업데이트가 필요합니다.

프로세스

  1. 시스템에 이미 연결된 스토리지 장치를 확인합니다.

    $ lsblk
    NAME          MAJ:MIN     SIZE   RO TYPE  MOUNTPOINTS
    zram0           251:0       8G    0 disk  [SWAP]
    nvme0n1         259:0   476.9G    0 disk
    ├─nvme0n1p1    259:1     600M    0 part  /boot/efi
    ├─nvme0n1p2    259:2       1G    0 part  /boot
    └─nvme0n1p3    259:3   475.4G    0 part
  2. 외부 스토리지를 연결하고 동일한 명령을 실행합니다. 두 출력을 비교하여 시스템에서 외부 스토리지 장치의 이름을 찾습니다.

    $ lsblk
    NAME        MAJ:MIN   SIZE   RO TYPE  MOUNTPOINTS
    sda             8:0   28.9G    0 disk
    └─sda1         8:1   28.9G    0 part
    zram0         251:0      8G    0 disk  [SWAP]
    nvme0n1       259:0  476.9G    0 disk
    ├─nvme0n1p1  259:1    600M    0 part  /boot/efi
    ├─nvme0n1p2  259:2      1G    0 part  /boot
    └─nvme0n1p3  259:3  475.4G    0 part

    이 경우 이름이 sda인 USB 드라이브에 sda 1 파티션이 있습니다.

    MOUNTPOINTS 열에는 외부 스토리지의 파티션 마운트 지점이 나열됩니다. 시스템이 외부 스토리지를 자동으로 마운트하는 경우 유효한 마운트 지점이 이미 존재합니다. 그러나 마운트 지점이 없는 경우 장치에 아무것도 저장하기 전에 직접 마운트해야 합니다.

  3. 빈 디렉터리를 만들거나 기존 디렉터리를 사용하여 파티션을 마운트합니다.

    $ sudo mkdir /mnt/usb/
    1. 장치 파티션을 마운트합니다.

      $ sudo mount /dev/sda1 /mnt/usb
    2. 선택 사항: 파티션이 올바르게 생성되었는지 확인합니다.

      $ lsblk
      NAME         MAJ:MIN    SIZE   RO TYPE  MOUNTPOINTS
      sda              8:0   28.9G    0 disk
      └─sda1          8:1   28.9G    0 part  /mnt/usb
      [...]

      외부 스토리지 장치는 여기에 파일을 복사할 준비가 되어 있습니다.

  4. skopeo 명령을 사용하여 마운트된 장치에 로컬로 저장된 컨테이너를 복사하고 사용자 환경에 맞게 컨테이너의 경로와 이름을 조정합니다.

    • 로컬 스토리지의 경우:

      $ sudo skopeo copy --preserve-digests --all \
        containers-storage:localhost/rhel-container:latest \
        oci://mnt/usb/
    • 원격 레지스트리에 저장된 컨테이너의 경우:

      $ sudo skopeo copy --preserve-digests --all \
        docker://quay.io/example:latest \
        oci://mnt/usb/
      참고

      컨테이너 크기에 따라 이러한 명령을 완료하는 데 몇 분이 걸릴 수 있습니다.

  5. 외부 스토리지를 마운트 해제하고 제거합니다.

    $ sudo umount /dev/sda1
    $ sudo eject /dev/sda1
  6. 오프라인 시스템의 컨테이너에 업데이트를 적용합니다.
  7. 외부 스토리지 장치를 오프라인 시스템에 연결합니다. 스토리지 장치가 자동으로 마운트되지 않으면 Cryostat mount 명령을 사용하여 외부 스토리지를 찾아서 마운트합니다.
  8. 외부 장치의 컨테이너를 오프라인 시스템의 로컬 컨테이너 레지스트리로 복사합니다. 컨테이너를 오프라인 머신의 로컬 컨테이너 스토리지에 복사합니다.

    $ skopeo copy --preserve-digests --all \
      oci://mnt/usb \
      containers-storage:rhel-update:latest

    이 경우 외부 스토리지의 마운트 지점이 OCI 섹션의 경로입니다. containers-storage 섹션은 컨테이너에 포함할 이름과 태그에 따라 다릅니다.

  9. Podman을 사용하여 컨테이너가 이제 로컬인지 확인합니다.

    $ podman images
    REPOSITORY			        TAG     IMAGE ID  CREATED  SIZE
    example.io/library/rhel-update   latest  cdb6d...  1 min    1.48 GB
  10. bootc 를 사용하여 오프라인 시스템의 컨테이너에 업데이트를 배포합니다.

    $ bootc switch --transport containers-storage \
    example.io/library/rhel-update:latest
    1. 컨테이너를 로컬 스토리지에 복사할 수 없는 경우 oci transport 플래그와 스토리지 장치의 경로를 대신 사용합니다.

      $ bootc switch --transport oci /mnt/usb

      bootc switch 명령에 --transport 플래그를 사용하면 컨테이너에 대한 대체 소스를 지정할 수 있습니다.

      bootc -image-builder 는 레지스트리를 사용하여 원래 이미지를 빌드하므로 기본적으로 bootc에서 레지스트리를 가져옵니다. bootc 업그레이드 를 사용하는 경우 업데이트가 있는 위치를 지정할 수 없습니다. bootc 스위치 를 사용하고 로컬 컨테이너 스토리지를 사용하도록 지정하면 원격 레지스트리의 요구 사항만 제거할 수 없으며 나중에 이 로컬 컨테이너를 사용하여 업데이트를 배포합니다.

      로컬 컨테이너 및 업데이트가 동일한 위치를 공유하면 bootc 업그레이드 를 사용할 수 있습니다. 나중에 원격 리포지토리에서 업데이트로 전환하려면 bootc 스위치 를 다시 사용해야 합니다.

검증

  1. 업데이트가 올바르게 배포되었는지 확인합니다.

    $ bootc status
    Staged image: containers-storage:example.io/library/rhel-update:latest
      Digest: sha256: 05b1dfa791...
      Version: 10.0 (2025-07-07 18:33:19.380715153 UTC)
    Booted Image: localhost/rhel-intel:base
      Digest: sha256: 7d6f312e09...
      Version: 10.0 (2025-06-23 15:58:12.228704562 UTC)

    출력에 현재 부팅된 이미지가 표시되고 변경 사항이 발생할 수 있습니다. 이전에 사용한 컨테이너는 표시되지만 다음 재부팅 때까지 스테이징된 변경 사항이 발생하지 않습니다. 또한 출력은 컨테이너 스토리지에서 업데이트를 가져오는지 확인합니다.

  2. 시스템을 재부팅합니다.

    $ bootc status
    Booted image: containers-storage:example.io/library/rhel-update:latest
    	Digest: sha256: 05b1dfa791...
    	Version: 10.0 (2025-07-07 18:33:19.380715153 UTC)
    Rollback image: localhost/rhel-intel:base
    	Digest: sha256: 7d6f312e09...
    	Version: 10.0 (2025-06-23 15:58:12.228704562 UTC)

    올바른 이미지로 부팅되었는지 확인할 수 있습니다.

    • 부팅된 이미지는 업데이트된 이미지입니다.
    • 롤백 이미지는 이전 이미지입니다. 오프라인 이미지 모드 업데이트가 성공적으로 수행되었습니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동