18장. 컨테이너에서 Skopeo, Buildah, Podman 실행
컨테이너에서 Skopeo, Buildah 및 Podman을 실행할 수 있습니다.
Skopeo를 사용하면 모든 레이어로 전체 이미지를 다운로드할 필요 없이 원격 레지스트리의 이미지를 검사할 수 있습니다. Skopeo를 사용하여 이미지 복사, 서명, 이미지 동기화, 다양한 형식 및 계층 압축 간에 이미지를 변환할 수도 있습니다.
Buildah는 OCI 컨테이너 이미지를 쉽게 빌드할 수 있습니다. Buildah를 사용하면 이미지를 처음부터 시작하거나 시작점으로 사용하여 작업 중인 컨테이너를 생성할 수 있습니다. 작업 컨테이너에서 또는 Containerfile
의 지침을 사용하여 이미지를 생성할 수 있습니다. 작동 중인 컨테이너의 루트 파일 시스템을 마운트 및 마운트 해제할 수 있습니다.
Podman을 사용하면 컨테이너 및 이미지, 해당 컨테이너에 마운트된 볼륨, 컨테이너 그룹으로부터 생성된 포드를 관리할 수 있습니다. Podman은 컨테이너 라이프사이클 관리를 위한 libpod
라이브러리를 기반으로 합니다. libpod
라이브러리는 컨테이너, 포드, 컨테이너 이미지 및 볼륨을 관리하기 위한 API를 제공합니다.
컨테이너에서 Buildah, Skopeo 및 Podman을 실행하는 이유는 다음과 같습니다.
CI/CD 시스템:
- podman 및 Skopeo: Kubernetes 내에서 CI/CD 시스템을 실행하거나 OpenShift를 사용하여 컨테이너 이미지를 빌드하고 다른 컨테이너 레지스트리에 해당 이미지를 배포할 수 있습니다. Skopeo를 Kubernetes 워크플로우에 통합하려면 컨테이너에서 실행해야 합니다.
-
Buildah: 지속적으로 이미지를 빌드하는 Kubernetes 또는 OpenShift CI/CD 시스템 내에서 OCI/컨테이너 이미지를 빌드하려고 합니다. 이전에는 Docker 소켓을 사용하여 컨테이너 엔진에 연결하고 Docker
빌드
명령을 수행했습니다. 이는 안전하지 않은 암호 없이 시스템에 root 액세스 권한을 부여하는 것과 동일합니다. 이러한 이유로 Red Hatrecommends는 컨테이너에서 Buildah를 사용합니다.
다른 버전:
- 모두: 호스트에서 이전 운영 체제를 실행 중이지만 Skopeo, Buildah 또는 Podman의 최신 버전을 실행하려고 합니다. 해결책은 컨테이너에서 컨테이너 툴을 실행하는 것입니다. 예를 들어 최신 버전에 기본적으로 액세스할 수 없는 Red Hat Enterprise Linux 7 컨테이너 호스트에서 Red Hat Enterprise Linux 8에 제공된 컨테이너 도구의 최신 버전을 실행하는 데 유용합니다.
HPC 환경:
- 모두: HPC 환경에서 일반적인 제한은 루트가 아닌 사용자가 호스트에 패키지를 설치할 수 없다는 것입니다. 컨테이너에서 Skopeo, Buildah 또는 Podman을 실행하는 경우 루트가 아닌 사용자로 이러한 특정 작업을 수행할 수 있습니다.
18.1. 컨테이너에서 Skopeo 실행
다음 절차에서는 Skopeo를 사용하여 원격 컨테이너 이미지를 검사하는 방법을 설명합니다. 컨테이너에서 Skopeo를 실행하면 컨테이너 루트 파일 시스템이 호스트 루트 파일 시스템과 격리됩니다. 호스트와 컨테이너 간에 파일을 공유하거나 복사하려면 파일과 디렉터리를 마운트해야 합니다.
사전 요구 사항
-
containers-tool
meta-package가 설치됩니다.
절차
registry.redhat.io 레지스트리에 로그인합니다.
$ podman login registry.redhat.io Username: myuser@mycompany.com Password: <password> Login Succeeded!
registry.redhat.io/rhel9/skopeo
컨테이너 이미지를 가져옵니다.$ podman pull registry.redhat.io/rhel9/skopeo
Skopeo를 사용하여 원격 컨테이너 이미지
registry.access.redhat.com/ubi9/ubi
를 검사합니다.$ podman run --rm registry.redhat.io/rhel9/skopeo \ skopeo inspect docker://registry.access.redhat.com/ubi9/ubi { "Name": "registry.access.redhat.com/ubi9/ubi", ... "Labels": { "architecture": "x86_64", ... "name": "ubi9", ... "summary": "Provides the latest release of Red Hat Universal Base Image 9.", "url": "https://access.redhat.com/containers/#/registry.access.redhat.com/ubi9/images/8.2-347", ... }, "Architecture": "amd64", "Os": "linux", "Layers": [ ... ], "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "container=oci" ] }
--rm
옵션은 컨테이너가 종료된 후registry.redhat.io/rhel9/skopeo
이미지를 제거합니다.
추가 리소스