바로 가기

Buildah란?

URL 복사

Buildah는 Open Container Initiative(OCI) 호환 컨테이너를 구축하는 데 사용되는 오픈소스 Linux 기반 툴입니다. 이는 컨테이너가 Docker쿠버네티스와도 호환된다는 뜻입니다. Buildah로 원하는 툴을 사용해 기존의 기본 이미지에서, 또는 빈 이미지를 사용해 처음부터, 효율적인 컨테이너 이미지를 생성할 수 있습니다. 이로써 컨테이너 이미지를 더 유연하고 안전하게 빌드할 수 있습니다. 여기서 그 방법을 자세히 알아보겠습니다.

Buildah(“builder”를 보스턴 억양으로 발음한 것을 표현함)는 2017년 Red Hat에서 Daniel Walsh가 이끄는 팀이 개발했습니다. 이들은 컨테이너 이미지의 “coreutils”를 만드는 데 착수했습니다. 이 툴을 기존 컨테이너 호스트 툴과 함께 사용해 OCI 및 Docker와 호환되는 컨테이너 이미지를 빌드할 수 있었습니다. 이렇게 빌드된 이미지는 컨테이너 레지스트리에 저장했다가 Docker와 같은 컨테이너 데몬(루트 액세스 권한 필요, 이를 통해 생긴 컨테이너는 데몬 자체의 기능에 의존)을 사용하거나 사용하지 않고 여러 실행(runtime) 환경에서 사용할 수 있었습니다. 

그 결과물이 바로 다음과 같은 이점을 제공하는 커맨드라인 툴인 Buildah였습니다.

  • Dockerfile(이미지 구성을 위해 사용자가 요청할 수 있는 모든 커맨드를 포함하는 텍스트 문서)을 이용하거나 이용하지 않고 컨테이너 이미지 빌드 
  • 처음부터 새로 또는 기존 컨테이너 이미지 시작점에서 컨테이너 이미지 생성
  • 이미지 자체에 빌드 툴이 포함되어 있지 않아 빌드된 이미지의 크기가 줄고, 보안이 강화되며, 더 적은 리소스를 사용해 더 쉽게 전송 가능 
  • Dockerfile과 호환되므로 Docker에서 손쉽게 이전 가능
  • 이미지를 생성한 사용자가 이미지를 정렬할 수 있도록 사용자별 이미지 생성

Buildah로 유연하게 Dockerfile 없이 이미지를 빌드할 수 있어 다른 스크립트 언어를 빌드 프로세스로 통합할 수 있을 뿐 아니라 효율적으로 이미지 외부의 빌드 툴을 사용할 수 있기 때문에 더 빠르게 혁신하고 새로운 아이디어를 구현할 수 있습니다. 컨테이너 이미지는 이미지 실행에 필요한 툴과 프로세스만으로도 신속하게 생성하고 빌드할 수 있습니다.

다음 작업도 Buildah로 수행할 수 있습니다.

  • 이미지 검사, 확인, 수정
  • 컨테이너와 이미지를 로컬 스토리지에서 퍼블릭/프라이빗 레지스트리 또는 리포지토리로 푸시
  • Docker Hub에서 이미지 푸시 또는 풀
  • 로컬에 저장된 컨테이너 이미지 제거
  • 작동 중인 컨테이너의 루트 파일 시스템을 마운트 또는 분리
  • 컨테이너 루트 파일 시스템의 업데이트된 콘텐츠를 새로운 이미지의 파일 시스템 계층으로 사용

Buildah와 Podman은 둘 다 상호 보완적인 오픈소스 프로젝트 및 커맨드라인 툴로서, OCI 이미지와 컨테이너를 빌드하고 이를 이용해 작업합니다. Buildah가 먼저 개발되었으며, Podman은 Buildah와 동일한 코드를 사용해 빌드합니다. 하지만 Buildah의 커맨드는 Podman보다 훨씬 더 세밀하므로 이미지를 더 세부적으로 제어하고 더 미세한 이미지 계층을 생성할 수 있습니다. Podman의 '빌드' 커맨드는 Buildah 기능의 하위 집합을 사용합니다. 

Buildah는 컨테이너 이미지를 빌드에 특화되어 데몬 소켓 구성 요소 없이 Dockerfile에서 찾을 수 있는 모든 커맨드를 복제하는 반면, Podman은 컨테이너에 있는 이러한 이미지를 유지 관리하고 수정하는 데 필요한 사항에 특화되어 있습니다. Podman으로 컨테이너를 생성(Buildah를 사용해 컨테이너 이미지 제공)한 다음, 익숙한 커맨드라인 인터페이스(CLI) 커맨드를 사용해 프로덕션 환경에서 생성한 컨테이너를 실행, 유지 관리, 수정할 수 있습니다(Docker CLI에서 커맨드를 실행할 수 있는 경우 Podman CLI에서 동일한 커맨드를 실행할 수 있음). 

Podman과 Buildah의 또 다른 차이점은 Buildah의 컨테이너가 주로 임시로 생성되어 생성 중인 컨테이너 이미지로 콘텐츠를 전송할 수 있는 반면, Podman의 경우 사용자가 더 오래 사용하고 유지 관리하기 위해 기존 컨테이너를 생성한다는 것입니다. Buildah의 컨테이너는 단기 사용이 목적인 반면, Podman의 컨테이너는 장기 용도입니다. 

그 외에도 Buildah와 Podman은 컨테이너의 내부 표현을 공유하지 않아, 한 곳의 컨테이너가 다른 곳에서는 보이지 않는다는 특징이 있습니다. 하지만 컨테이너 이미지의 내부 표현은 공유하므로 한 곳에서 생성, 수정 또는 풀링되는 컨테이너 이미지를 다른 곳에서 보고 사용할 수 있습니다.  

Red Hat에서 Red Hat 엔지니어 및 개발자가 시간을 절약하고 생산성을 높일 수 있는 유용한 툴을 함께 만드는 과정에서 Buildah가 시작되었습니다. Podman과 Skopeo와 같이 Buildah는 Linux 컨테이너를 사용하여 작업하는 모든 사람에게 유용한 툴이며, Red Hat Enterprise Linux를 업그레이드하면 이러한 툴 전체를 충분히 활용하는 데 도움을 받을 수 있습니다. 컨테이너 및 쿠버네티스와 관련해 Red Hat이 운영 체제에서 자동화에 이르는 모든 사항을 지원해 드립니다. 

Red Hat은 컨테이너와 쿠버네티스에 전문성을 갖추고 있습니다. Red Hat은 컨테이너 전략을 올바로 수립하고 실행할 수 있도록 관련 제품과 서비스를 보유하고 있습니다.컨테이너를 염두에 두고 구축한 플랫폼에서 개발 팀이 작업하든, 뛰어난 운영 체제에서 컨테이너 인프라를 실행하든, 컨테이너에서 생성된 대용량 데이터를 위한 스토리지 솔루션을 제공하든, Red Hat의 솔루션을 통해 필요한 모든 것을 제공해 드립니다.

추가 자료

문서

컨테이너와 VM 비교

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

문서

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

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

문서

Linux 컨테이너란?

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

컨테이너에 대한 자세한 내용

제품

선택한 인프라에서 애플리케이션 출시 테스트를 완료한 통합 서비스 세트를 포함하는 엔터프라이즈 애플리케이션 플랫폼입니다.

리소스

팟캐스트

Command Line Heroes 시즌 1, 에피소드 5:
"The Containers Derby"

E-book

하이브리드 클라우드와 컨테이너로 민첩성 향상

교육

무료 교육 과정

Running Containers with Red Hat Technical Overview

무료 교육 과정

Containers, Kubernetes and Red Hat OpenShift Technical Overview

무료 교육 과정

Developing Cloud-Native Applications with Microservices Architectures