Red Hat Training

A Red Hat training course is available for RHEL 8

1장. 컨테이너 시작

Linux 컨테이너는 경량 애플리케이션 격리와 이미지 기반 배포 방법의 유연성을 결합한 핵심 오픈 소스 애플리케이션 패키징 및 제공 기술로 부각되었습니다. Red Hat Enterprise Linux는 다음과 같은 핵심 기술을 사용하여 Linux 컨테이너를 구현합니다.

  • 리소스 관리를 위한 컨트롤 그룹(cgroup)
  • 프로세스 격리를 위한 네임스페이스
  • 보안을 위한 SELinux
  • 보안 멀티 테넌시

이러한 기술은 보안 위협의 가능성을 줄이고 엔터프라이즈급 컨테이너를 생성하고 실행하는 환경을 제공합니다.

Red Hat OpenShift는 포드라는 단위로 컨테이너를 빌드, 관리 및 실행하기 위한 강력한 명령줄 및 웹 UI 툴을 제공합니다. Red Hat을 사용하면 OpenShift 외부에서 개별 컨테이너 및 컨테이너 이미지를 빌드하고 관리할 수 있습니다. 이 가이드에서는 RHEL 시스템에서 직접 실행되는 작업을 수행하기 위해 제공되는 툴을 설명합니다.

다른 컨테이너 툴 구현과 달리 여기에 설명된 툴은 모놀리식 Docker 컨테이너 엔진 및 docker 명령을 중심으로 진행하지 않습니다. 대신 Red Hat은 컨테이너 엔진 없이 작동할 수 있는 명령줄 도구 집합을 제공합니다. 여기에는 다음이 포함됩니다.

  • Podman - 포드 및 컨테이너 이미지를 직접 관리하는경우 (run,stop,start,ps,attach,exec 등)
  • Buildah - 컨테이너 이미지 빌드, 내보내기 및 서명
  • skopeo - 이미지 복사, 검사, 삭제 및 서명
  • runc - podman 및 buildah에 컨테이너 실행 및 빌드 기능을 제공하기 위한
  • crun - rootless 컨테이너에 대해 보다 높은 유연성, 제어 및 보안을 제공하고 구성할 수 있는 선택적 런타임

이러한 툴은 OCI(Open Container Initiative)와 호환되므로 Docker 및 기타 OCI 호환 컨테이너 엔진에서 생성 및 관리하는 것과 동일한 Linux 컨테이너를 관리하는 데 사용할 수 있습니다. 그러나 이러한 기능은 단일 노드 사용 사례에서 Red Hat Enterprise Linux에서 직접 실행하는 데 특히 적합합니다.

멀티 노드 컨테이너 플랫폼은 OpenShiftCRI-O 컨테이너 엔진 사용을 참조하십시오.

1.1. Podman, Buildah, Skopeo의 특성

Docker 명령 기능을 대체하기 위해 Podman, Skopeo 및 Buildah 툴이 개발되었습니다. 이 시나리오의 각 툴은 더 가벼우며 기능 하위 집합에 중점을 둡니다.

Podman, Skopeo 및 Buildah 툴의 주요 장점은 다음과 같습니다.

  • rootless 모드에서 실행 - rootless 컨테이너는 추가 권한 없이 실행되므로 훨씬 더 안전합니다.
  • 필요한 데몬 없음 - 이러한 툴에는 컨테이너를 실행하지 않는 경우 Podman이 실행되지 않기 때문에 유휴 상태에서 리소스 요구 사항이 훨씬 낮아집니다. 반대로 Docker에는 데몬이 항상 실행됩니다.
  • 기본 systemd 통합 - Podman을 사용하면 systemd 장치 파일을 생성하고 컨테이너를 시스템 서비스로 실행할 수 있습니다.

Podman, Skopeo 및 Buildah의 특성은 다음과 같습니다.

  • Podman, Buildah 및 CRI-O 컨테이너 엔진은 기본적으로 Docker 스토리지 위치 /var/lib/ docker를 사용하는 대신 동일한 백엔드 저장소 디렉터리인 /var/lib/ containers 를 사용합니다.
  • Podman, Buildah 및 CRI-O는 동일한 스토리지 디렉터리를 공유하지만 서로의 컨테이너와 상호 작용할 수 없습니다. 이러한 도구는 이미지를 공유할 수 있습니다.
  • Podman과 프로그래밍 방식으로 상호 작용하려면 Podman v2.0 RESTful API를 사용하여 rootful 및 rootless 환경 모두에서 작동합니다. 자세한 내용은 container-tools API 사용 장을 참조하십시오.