21장. 컨테이너

다음 장에서는 RHEL 8과 RHEL 9 사이의 컨테이너에 대한 가장 주목할 만한 변경 사항이 포함되어 있습니다.

21.1. 컨테이너 관련 주요 변경 사항

container-tools meta-package를 사용할 수 있습니다.

Podman, Buildah, Skopeo, CRIU, Udica 및 모든 필수 라이브러리를 포함하는 container-tools RPM 메타 패키지를 RHEL 9에서 사용할 수 있습니다. RHEL 9에서는 안정적인 스트림을 사용할 수 없습니다. Podman, Buildah, Skopeo 등에 대한 안정적인 액세스를 받으려면 RHEL EUS 서브스크립션을 사용합니다.

container-tools meta-package를 설치하려면 다음을 수행합니다.

  • container-tools meta-package를 설치합니다.

    $ sudo dnf install container-tools

제어 그룹 성능 개선

이전 버전의 제어 그룹인 cgroup 버전 1(cgroup v1)으로 인해 다양한 애플리케이션의 성능 문제가 발생했습니다. cgroup 버전 2(cgroup v2)의 최신 제어 그룹 릴리스를 통해 시스템 관리자는 성능 문제가 발생하지 않고 애플리케이션의 리소스를 제한할 수 있습니다.

RHEL 9에서는 새로운 버전의 제어 그룹인 cgroups v2가 기본적으로 활성화되어 있습니다.

Podman에서 보안 짧은 이름 지원

[aliases] 테이블에 있는 registries.conf 파일에서 이미지의 단축 별칭을 구성할 수 있습니다. 짧은 이름 모드는 다음과 같습니다.

  • 강제: 이미지 가져오기 중에 일치하는 별칭을 찾을 수 없는 경우 Podman은 사용자에게 unqualified-search 레지스트리 중 하나를 선택하라는 메시지를 표시합니다. 선택한 이미지를 성공적으로 가져오면 Podman은 $HOME/.cache/containers/short-name-aliases.conf 파일(rootless 사용자) 및 /var/cache/containers/short-name-aliases.conf (root user)에 자동으로 새로운 단축 별칭을 기록합니다. 사용자에게 메시지를 표시할 수 없는 경우 (예: stdin 또는 stdout는 TTY가 아님) Podman은 실패합니다. 둘 다 동일한 별칭을 지정하는 경우 short-name-aliases.conf 파일이 registries.conf 파일보다 우선합니다. 강제 모드는 RHEL 9의 기본값입니다.
  • 허용: 강제 모드와 유사하지만, 사용자에게 메시지를 표시할 수 없는 경우 Podman은 실패하지 않습니다. 대신 Podman은 지정된 순서로 모든 정규화되지 않은 레지스트리에서 검색합니다. 별칭은 기록되지 않습니다. RHEL 8에서는 허용 모드가 기본값입니다.

예제:

unqualified-search-registries=["registry.fedoraproject.org", "quay.io"]
[aliases]
"fedora"="registry.fedoraproject.org/fedora"

registries.conf의 기본 컨테이너 레지스트리

/etc/containers/registries.conf 파일의 컨테이너 레지스트리 목록은 루트 사용자로, $HOME/.config/containers/registries.conf 에서 root 사용자로 찾을 수 있습니다. registries.conf 파일을 변경하면 기본 시스템 전체 검색 설정을 변경할 수 있습니다.

RHEL 8의 경우 unqualified-search-registries 는 다음과 같습니다.

unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"]
short-name-mode = "permissive"

RHEL 9의 경우 unqualified-search-registries 는 다음과 같습니다.

unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"]
short-name-mode = "enforcing"

기본 OCI 런타임 변경

이제 container-tools:rhel8 모듈에 crun OCI 런타임을 사용할 수 있습니다. crun 컨테이너 런타임은 컨테이너에서 rootless 사용자의 추가 그룹에 액세스할 수 있는 주석을 지원합니다. 이는 setgid가 설정된 디렉터리에서 볼륨을 마운트하는 경우 또는 사용자가 그룹 액세스 권한만 있는 경우 컨테이너 작업에 유용합니다.

  • RHEL 8의 기본 컨테이너 런타임은 runc 입니다.
  • RHEL 9의 기본 컨테이너 런타임은 crun 입니다.

RHEL 7 호스트에서 RHEL 9 컨테이너 실행은 지원되지 않습니다.

RHEL 7 호스트에서 RHEL 9 컨테이너 실행은 지원되지 않습니다.

자세한 내용은 Red Hat Enterprise Linux 컨테이너 호환성 매트릭스 를 참조하십시오.

기본 네트워크 스택

Podman은 RHEL 8 및 Netavark의 기본 네트워크 스택으로 CNI를 RHEL 9를 새로 설치하는 기본 네트워크 스택으로 사용합니다.

RHEL 8에서 RHEL 9로 인플레이스 업그레이드를 수행하는 경우 Podman의 네트워크 스택이 다음과 같이 설정됩니다.

  • /etc/containers/containers.conf 파일의 network_backend 매개 변수가 설정되지 않았거나 RHEL 8의 Podman 네트워크 스택을 Netavark로 수동으로 업그레이드한 경우 Netavark.
  • 업그레이드 후 Podman이 처음 실행될 때 제공되는 컨테이너, 이미지, Pod 또는 네트워크가 있는 경우 CNI입니다. 그런 다음 새 Netavark 네트워크 스택으로 수동으로 업그레이드할 수 있습니다. CNI와 Netavark 네트워크 스택 간에 전환하는 방법에 대한 자세한 내용은 8.6 네트워크 스택 전환을 참조하십시오 CNI에서 Netavark 및 8.7 네트워크 스택 전환

올바른 백엔드가 선택되도록 network_backend 매개변수를 명시적으로 지정하는 것이 좋습니다.

주의

podman 컨테이너 체크포인트 및 podman container restore 명령을 사용하여 기존 컨테이너 를 다른 네트워크 스택 시스템으로 마이그레이션할 수 없습니다. CNI 네트워크 스택에서 Netavark 네트워크 스택으로 전환하려면 컨테이너 이미지에서 컨테이너를 다시 생성합니다.