바로 가기

Skopeo란?

URL 복사

Skopeo는 Linux® 시스템, Windows, MacOS에서 컨테이너 이미지와 이미지 리포지토리를 조작, 검사, 서명, 전송하기 위한 툴입니다. Podman이나 Buildah와 같이 Skopeo는 컨테이너 데몬을 실행할 필요가 없는 커뮤니티 기반의 오픈소스 프로젝트입니다.

Skopeo는 이미지 레이어 전체를 다운로드할 필요 없이 원격 레지스트리에서 이미지를 검사할 수 있기 때문에 Open Container Initiative(OCI)와 Docker 이미지와 같이 다양한 형식의 컨테이너 이미지를 다룰 수 있는 모듈식 경량화 솔루션입니다.

컨테이너 이미지는 격리된 프로세스에서 구동될 수 있는 실행 가능한 코드를 가진 파일입니다. 컨테이너 이미지는 다음 두 부분으로 구성됩니다.

tar 아카이브

첫 번째 부분은 컨테이너 파일 시스템의 하나 이상의 tar 아카이브입니다. tar 아카이브란 파일 모음으로, 파일 시스템 디렉터리는 애플리케이션을 실행하는데 필요한 모든 코드와 구성 파일을 포함합니다.

JSON 파일

두 번째 부분은 애플리케이션을 설명하는 JSON 파일로, 컨테이너 실행 방법에 관한 개발자의 구성을 제공하고, 애플리케이션과 서버 간 데이터를 전송하며, 이미지의 개별 구성 요소와 이러한 요소를 참조하는 방법에 관한 메타데이터를 저장합니다.

컨테이너 리포지토리는 다양한 버전의 애플리케이션을 제공하는 컨테이너 이미지 그룹이며, 컨테이너 레지스트리는 이미지 액세스 또는 새로운 이미지 업로드 기능을 제공하는 서버입니다. 

Skopeo("원격으로 보기"를 뜻하는 그리스어)는 Red Hat 엔지니어가 오픈소스 커뮤니티와 함께 처음 개발한 컨테이너 툴입니다. Skopeo는 Podman 및 Buildah와 함께 OCI 컨테이너를 관리합니다. 간단히 말해 Podman은 컨테이너를 실행하고, Buildah는 컨테이너를 구축하며, Skopeo는 컨테이너를 전송합니다. 마치 컨테이너 환경을 위한 스위스 군용 나이프와 같은 셈입니다. 그 중에서 Skopeo는 자유롭게 쓸 수 있는 날렵한 다목적 칼날과 같습니다.

Skopeo는 skopeo 검사 커맨드를 통해 이미지를 검사합니다. Skopeo가 출시되기 전까지는 이미지를 검사하려면 일부 메타데이터만을 검사하고 싶더라도 전체 이미지를 가져와야만 했습니다. Skopeo의 검사 커맨드는 레이어, 이미지 태그, 레이블과 같은 이미지 속성을 보여주기 때문에 이미지를 호스트로 가져올 필요가 없습니다. 따라서 용량에 관계 없이 리포지토리나 태그에 관한 정보를 수집할 수 있습니다. 

Skopeo는 리포지토리에서 이미지를 삭제하여, 네트워크 연결이 끊긴 더 안전한 배포, 즉 에어갭(air-gapped) 배포를 위해 외부 이미지 리포지토리를 내부 리포지토리에 동기화시킵니다. 리포지토리에 필요한 경우, Skopeo는 인증을 위해 적합한 자격 증명과 인증서를 통과시킬 수 있습니다.  

Skopeo 동기화는 온라인 사용을 위한 레지스트리 간 직접 복사와, 연결이 끊긴 환경을 준비하기 위한 레지스트리와 파일 간 복사를 지원합니다. 요청된 복사에 대한 작업을 요구하는 skopeo 복사와는 달리 skopeo 동기화는 수정이 거의 없이 대규모 리포지토리의 정기적인 재동기화를 더욱 빠르게 실행하도록 조정됩니다. 동기화 작업은 직접적인 커맨드라인을 사용하면서도 구성 파일에서 구성이 가능하므로 대규모 리포지토리에서 태그 하위 세트만 동기화할 수 있습니다.

컨테이너 이미지를 하나의 위치 또는 스토리지에서 다른 위치 또는 스토리지로 복사해 검사해야 하는 경우, Skopeo 복사 커맨드로 검사를 수행할 수 있습니다. 이 툴을 사용하면 docker.io, quay.io, 내부 컨테이너 레지스트리와 같은 레지스트리 간 또는 로컬 시스템 상의 다양한 스토리지 메커니즘 간에 컨테이너 이미지를 복사할 수 있습니다. Skopeo의 레지스트리 간 직접 복사는 속도가 빠르며, 대상 레지스트리가 허용하는 경우 수정되지 않은 형식(및 이미지의 매니페스트 다이제스트)을 유지합니다. 레지스트리 간 이미지를 복사할 때 로컬 디스크를 사용하거나 로컬 디스크 상의 빈 공간을 확보할 필요가 없습니다. Skopeo는 컨테이너 엔진 스토리지와 디렉터리 간 이동도 가능합니다. Skopeo는 컨테이너 레지스트리를 최신 상태로 유지하고 컨테이너 서버에서 스토리지를 유지하기 위해 CI/CD에서 주로 사용됩니다.

유연한 툴링

Skopeo는 다양한 장점을 지닌 컨테이너 툴의 모듈식 제품군에 속합니다. 기존 사용자를 위해 모놀리식 툴을 중단하지 않고 대폭 변경하기란 어려운 일입니다. Skopeo, Podman, Buildah와 같은 더 작고 전문화된 툴은 빠르게 변화할 수 있습니다. 툴 세트를 보유하고 있으면 개별 툴을 단일 용도로 활용할 수 있으며, 새로운 툴을 추가해 기능을 확대하거나 기존 툴과는 호환되지 않는 아이디어나 아키텍처를 실험해볼 수 있습니다. 더 작고 모듈화된 툴은 보안도 간편합니다.

Podman의 기능 일부를 다른 툴과 코드 공유를 허용하는 libpod 라이브러리에서 가져오는 방식과 비슷하게 Skopeo 기능도 라이브러리에 구현됩니다. Skopeo의 컨테이너/이미지 라이브러리는 Podman, Buildah, CRI-O와 같은 다른 컨테이너 툴과 공유되며 Docker 커맨드라인 인터페이스(CLI)와도 호환이 가능합니다. 

보안 및 접근성

Podman, Skopeo, Buildah를 함께 사용할 때의 주요 이점은 다음과 같습니다.

  • 루트리스(rootless) 컨테이너 관리. 사용자는 프로세스에 관리 권한이 없어도 컨테이너를 생성, 실행, 관리할 수 있어, 더 손쉽게 액세스할 수 있는 컨테이너 환경을 만드는 동시에 보안 리스크는 줄일 수 있습니다.
  • 데몬이 없는 아키텍처. 데몬은 파일을 읽고, 프로그램을 설치하고, 애플리케이션을 수정하기 위해 관리자 액세스를 필요로 합니다(동시에 관리자 검증 절차를 건너뜀). 따라서 데몬은 컨테이너를 장악하고 호스트 시스템에 잠입하려는 해커들에게 매우 좋은 표적이 될 수 있습니다. 
  • 네이티브 systemd 통합. Podman과 관련 컨테이너 툴을 사용하면 systemd 유닛 파일을 생성하고 컨테이너를 시스템 서비스로 실행할 수 있습니다.

쿠버네티스 

쿠버네티스는 컨테이너화된 애플리케이션을 배포, 관리, 스케일링하는 데 필요한 대부분의 수동 프로세스를 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼입니다. 쿠버네티스 내부에서 CI/CD 시스템을 실행하거나 Red Hat OpenShift®를 사용해 컨테이너 이미지를 구축하면 각기 다른 컨테이너 레지스트리 전체에 이러한 이미지를 배포해야 할 수 있습니다. Skopeo는 이러한 태스크에 적합한 툴입니다.

고성능 컴퓨팅

호스트 시스템에서 이전 운영 체제를 실행하는 사용자는 Skopeo 또는 다른 툴을 실행하여 최신 기능 및 업데이트를 이용하고 싶어할 수 있습니다. 고성능 컴퓨팅(HPC) 환경에서 가장 일반적인 제약은 루트리스 사용자가 호스트에서 패키지를 설치할 수 없다는 점입니다. HPC에서 Podman이 점차 널리 사용되면서 Podman과 Skopeo 컨테이너를 함께 실행해 몇 가지 명령만으로 특정 태스크를 수행할 수 있게 되었으며, 사용자도 루트 액세스가 필요하지 않습니다. 

Red Hat Enterprise Linux는 더 적은 리포지토리와 더 다양해진 개발자 툴로 컨테이너 개발을 간소화합니다. Podman, Buildah, Skopeo와 같은 컨테이너 툴은 Red Hat Enterprise Linux 서브스크립션에 포함되어 있어, 컨테이너 이미지와 컨테이너 요구 사항을 지원하는 강력한 토대가 됩니다. 이러한 툴 외에도 Red Hat은 자체 이미지를 위한 기반으로서 기본 이미지를 제공합니다. 

Red Hat Enterprise Linux 커맨드라인 툴, Universal Base Image(UBI), Red Hat Quay의 리포지토리, 추가 리포지토리로 컨테이너 이미지를 실행, 구축, 공유하세요. 복잡한 컨테이너 개발이 한층 쉬워집니다.

추가 자료

문서

컨테이너와 VM 비교

Linux 컨테이너 및 VM(가상 머신)은 다양한 IT 요소를 결합해 시스템의 나머지 부분으로 부터 격리하는 패키징된 컴퓨팅 환경입니다.

문서

컨테이너 오케스트레이션이란?

컨테이너 오케스트레이션은 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화합니다.

문서

Linux 컨테이너란?

Linux 컨테이너는 시스템에서 격리된 프로세스로, 이러한 프로세스를 지원하는 데 필요한 모든 파일을 제공하는 고유한 이미지에서 실행됩니다.