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 build
명령을 수행했습니다. 이는 암호가 안전하지 않은 암호 없이 시스템에 루트 액세스 권한을 제공하는 것과 동일합니다. 이러한 이유로 컨테이너에서 Buildah를 대신 사용합니다.
다른 버전:
- 모두: 호스트에서 이전 운영 체제를 실행 중이지만 Skopeo, Buildah 또는 Podman의 최신 버전을 실행하려고 합니다. 해결책은 컨테이너에서 컨테이너 툴을 실행하는 것입니다. 예를 들어 최신 버전에 기본적으로 액세스할 수 없는 Red Hat Enterprise Linux 7 컨테이너 호스트에서 Red Hat Enterprise Linux 8에 제공된 컨테이너 도구의 최신 버전을 실행하는 데 유용합니다.
HPC 환경:
- 모두: HPC 환경의 일반적인 제한 사항은 루트가 아닌 사용자가 호스트에 패키지를 설치할 수 없다는 것입니다. 컨테이너에서 Skopeo, Buildah 또는 Podman을 실행하는 경우 이러한 특정 작업을 루트가 아닌 사용자로 수행할 수 있습니다.
18.1. 컨테이너에서 Skopeo 실행
Skopeo를 사용하여 원격 컨테이너 이미지를 검사할 수 있습니다. 컨테이너에서 Skopeo를 실행하면 컨테이너 루트 파일 시스템이 호스트 루트 파일 시스템과 격리됩니다. 호스트와 컨테이너 간에 파일을 공유하거나 복사하려면 파일과 디렉터리를 마운트해야 합니다.
사전 요구 사항
-
container-tools
모듈이 설치되어 있습니다.
절차
registry.redhat.io 레지스트리에 로그인합니다.
podman login registry.redhat.io
$ podman login registry.redhat.io Username: myuser@mycompany.com Password: <password> Login Succeeded!
Copy to Clipboard Copied! registry.redhat.io/rhel8/skopeo
컨테이너 이미지를 가져옵니다.podman pull registry.redhat.io/rhel8/skopeo
$ podman pull registry.redhat.io/rhel8/skopeo
Copy to Clipboard Copied! Skopeo를 사용하여 원격 컨테이너 이미지
registry.access.redhat.com/ubi8/ubi
를 검사합니다.podman run --rm registry.redhat.io/rhel8/skopeo \ skopeo inspect docker://registry.access.redhat.com/ubi8/ubi
$ podman run --rm registry.redhat.io/rhel8/skopeo \ skopeo inspect docker://registry.access.redhat.com/ubi8/ubi { "Name": "registry.access.redhat.com/ubi8/ubi", ... "Labels": { "architecture": "x86_64", ... "name": "ubi8", ... "summary": "Provides the latest release of Red Hat Universal Base Image 8.", "url": "https://access.redhat.com/containers/#/registry.access.redhat.com/ubi8/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" ] }
Copy to Clipboard Copied! rm 옵션은
컨테이너가
종료된 후registry.redhat.io/rhel8/skopeo
이미지를 제거합니다.