Docker 없이 Buildah 툴에서 도커 이미지 빌드하기
컨테이너화된 애플리케이션의 빌드와 관리는 현대 소프트웨어 개발의 필수 요소 중 하나입니다. 대부분의 사용자는 Docker를 이용하지만, Docker Engine 없이도 이미지를 빌드할 수 있는 다양한 도구가 존재합니다. 이 글에서는 그중 하나인 Buildah를 사용하여 도커 이미지를 빌드하는 방법에 대해 소개합니다.
Buildah 소개
Buildah는 리눅스 컨테이너 이미지를 빌드하기 위한 도구로, Dockerfile 없이도 이미지를 생성, 수정, 그리고 버전 관리할 수 있게 해줍니다. Buildah는 OCI(Open Container Initiative) 표준을 준수하며, 도커와 호환 가능한 이미지를 생성할 수 있습니다.
Buildah 설치하기
먼저, Buildah를 사용하기 위해 시스템에 설치해야 합니다. 리눅스 배포판에 따라 설치 방법이 다를 수 있으니, 아래 예시를 참고하세요.
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y ppa:projectatomic/ppa
sudo apt-get update
sudo apt-get -y install buildah
Fedora:
sudo dnf -y install buildah
CentOS/RHEL:
sudo yum -y install buildah
Buildah를 이용한 Containerfile로 도커 이미지 빌드하기
Containerfile을 사용하여 이미지를 빌드하는 것은 컨테이너화된 애플리케이션 개발에서 흔히 사용되는 접근 방식입니다. Buildah는 이러한 파일을 이용해 Docker Engine 없이도 이미지를 빌드할 수 있는 강력한 도구입니다. 이 글에서는 Buildah와 Containerfile을 사용하여 도커 이미지를 빌드하는 방법을 소개합니다.
Containerfile 작성하기
Containerfile은 이미지 빌드 과정을 정의하는 파일입니다. Dockerfile과 매우 유사하며, Buildah는 이를 직접 사용할 수 있습니다. 아래는 간단한 웹 서버를 빌드하기 위한 Containerfile의 예시입니다.
# 기반 이미지로 alpine 사용
FROM alpine
# nginx 설치
RUN apk add --no-cache nginx
# 웹 서버 구성 파일 복사 및 디렉토리 생성
COPY nginx.conf /etc/nginx/nginx.conf
RUN mkdir -p /run/nginx
# 포트 80 오픈
EXPOSE 80
# nginx 실행
CMD ["nginx", "-g", "daemon off;"]
이 파일을 **Containerfile**이라는 이름으로 저장합니다. **nginx.conf**와 웹 서버의 홈페이지를 위한 index.html 파일도 준비해야 합니다.
Buildah를 사용한 이미지 빌드
이제 Buildah를 사용하여 위의 Containerfile로부터 이미지를 빌드할 수 있습니다. 아래 명령어를 실행하면 됩니다.
buildah bud -t my-webserver .
이 명령어는 현재 디렉토리(.)에 있는 Containerfile을 사용하여 **my-webserver**라는 태그를 가진 이미지를 빌드합니다. buildah bud 명령은 Docker의 docker build 명령어와 유사한 역할을 합니다.
이미지 확인 및 실행
빌드가 완료되면, 생성된 이미지를 확인할 수 있습니다.
buildah images
이미지를 컨테이너로 실행하려면, 다음과 같은 명령어를 사용할 수 있습니다.
podman run -d -p 8080:80 my-webserver
여기서 **podman**은 Buildah와 함께 사용할 수 있는 또 다른 컨테이너 도구입니다. 이 명령어는 8080 포트를 컨테이너의 80 포트에 바인딩하여 웹 서버에 접근할 수 있게 합니다.
이제 브라우저를 통해 **http://localhost:8080**에 접속하면, 빌드한 이미지를 기반으로 실행되는 웹 서버의 홈페이지를 볼 수 있습니다.
결론
Buildah와 Containerfile을 사용하여 Docker Engine 없이도 효율적으로 이미지를 빌드할 수 있음을 보여줍니다. 이 방법은 Dockerfile과 호환되며, OCI 표준 이미지를 생성할 수 있어 다양한 컨테이너 오케스트레이션 시스템에서 사용할 수 있습니다.
'devops > docker' 카테고리의 다른 글
docker image를 tar파일로 저장하는 방법 (0) | 2020.12.30 |
---|---|
도커 이미지 사이즈 줄이기 - Best Practices (0) | 2020.05.12 |
도커 빌드 속도를 높히고, 도커 이미지 크기를 줄이는 방법 (0) | 2020.05.12 |
도커 컨테이너 한꺼번에 삭제하는 명령어 모음(정지된 컨테이너만 삭제하는 명령어 포함) (0) | 2020.04.28 |
도커 용량 확보하기(사용하지 않는 컨테이너와 이미지 한번에 삭제) (0) | 2020.04.23 |