Docker Buildx Build –load 사용법 완벽 가이드! 로컬 이미지 저장하기

Docker Buildx Build는 기본적으로 BuildKit 기반으로 동작하며 일반적인 docker build와 다른 방식으로 이미지를 처리합니다.

특히 Docker Buildx Build를 사용하면 빌드한 이미지가 바로 로컬 Docker 이미지 목록에 표시되지 않는 경우가 있습니다.

예:

docker buildx build \
-t my-app:v1 .

빌드는 성공했지만:

docker images

에서 이미지가 보이지 않을 수 있습니다.

이런 경우 사용하는 옵션이 바로 **--load**입니다.

Docker Buildx Build --load 옵션은 빌드한 이미지를 현재 Docker Engine의 로컬 이미지 저장소에 가져오는 기능입니다.

즉, 빌드 결과를 로컬에서 바로 실행하거나 테스트할 수 있도록 만들어 줍니다.

이번 글에서는 Docker Buildx Build –load의 개념부터 기본 사용법, –push와 차이점, 로컬 테스트 활용 방법까지 자세히 알아보겠습니다.

Docker Buildx Build –load란 무엇인가?

--load는 Buildx로 생성한 이미지를 로컬 Docker 이미지 저장소에 저장하는 옵션입니다.

기본 형식:

docker buildx build \
--load \
-t 이미지명 .

빌드 과정:

Dockerfile

↓

Buildx Build

↓

이미지 생성

↓

Local Docker Engine 저장

저장 후:

docker images

명령으로 확인할 수 있습니다.

Docker Buildx Build –load는 언제 사용하는가?

다음과 같은 상황에서 사용합니다.

  • 로컬 테스트
  • 개발 환경 이미지 실행
  • Docker Compose 테스트
  • 빌드 결과 확인
  • CI 테스트 환경

특히 개발자가 이미지를 빌드한 후 바로 컨테이너 실행을 확인할 때 유용합니다.

Docker Buildx Build 기본 사용법

기본 예제:

docker buildx build \
--load \
-t my-app:v1 .

빌드 완료 후:

docker images

확인:

REPOSITORY   TAG

my-app       v1

로컬 이미지로 저장된 것을 확인할 수 있습니다.

Docker Buildx Build –load와 Docker Build 차이

일반 Docker Build:

docker build \
-t app:v1 .

결과:

Local Docker Image

바로 사용 가능합니다.

하지만 Buildx Build:

docker buildx build \
-t app:v1 .

기본 출력 방식에 따라 로컬 저장되지 않을 수 있습니다.

이때:

--load

옵션을 추가합니다.

Docker Buildx Build –load 실무 예제

로컬 개발 이미지 생성

명령:

docker buildx build \
--load \
-t development-app:v1 .

확인:

docker images

실행:

docker run development-app:v1

개발 환경에서 바로 테스트할 수 있습니다.

Docker Compose 테스트 활용

개발자가 새로운 이미지를 만들었습니다.

빌드:

docker buildx build \
--load \
-t local-api:test .

Docker Compose:

services:
  api:
    image: local-api:test

실행:

docker compose up

로컬에서 새 이미지를 테스트할 수 있습니다.

Docker Buildx Build –load와 –push 차이

두 옵션은 저장 위치가 다릅니다.

–load

저장 위치:

Local Docker Engine

사용 목적:

  • 개발
  • 테스트
  • 로컬 실행

예:

docker buildx build \
--load \
-t app:v1 .

–push

저장 위치:

Docker Registry

사용 목적:

  • 운영 배포
  • Kubernetes
  • CI/CD

예:

docker buildx build \
--push \
-t company/app:v1 .

정리:

--load = 내 컴퓨터에 저장

--push = 서버 저장소에 업로드

Docker Buildx Build –load와 멀티 플랫폼 관계

주의할 점이 있습니다.

--load는 일반적으로 단일 플랫폼 이미지에서 사용합니다.

예:

가능:

docker buildx build \
--platform linux/amd64 \
--load \
-t app:v1 .

제한:

docker buildx build \
--platform linux/amd64,linux/arm64 \
--load \
-t app:v1 .

멀티 플랫폼 이미지는 하나의 로컬 Docker Engine에 저장하기 어렵기 때문에 일반적으로 사용하지 않습니다.

멀티 플랫폼:

--push

사용을 권장합니다.

Docker Buildx Build –load 출력 확인

빌드:

docker buildx build \
--load \
-t test-image:v1 .

확인:

docker images test-image

결과:

REPOSITORY

test-image

TAG

v1

정상적으로 로컬 저장된 것을 확인할 수 있습니다.

Linux 서버 문제 해결

개발 서버에서 이미지를 빌드했습니다.

명령:

docker buildx build \
-t app:test .

빌드 성공:

Successfully built

하지만 실행:

docker run app:test

오류:

Unable to find image

원인을 확인했습니다.

docker images

결과:

이미지 없음

Buildx 결과가 로컬 Docker Engine에 저장되지 않은 상태였습니다.

해결:

docker buildx build \
--load \
-t app:test .

확인:

docker images

결과:

app:test

실행:

docker run app:test

정상 실행되었습니다.

Docker Buildx Build –load는 로컬 개발 환경에서 가장 많이 사용하는 옵션입니다.

Docker Buildx Build –load 사용 시 주의사항

첫 번째는 멀티 플랫폼 이미지에는 적합하지 않습니다.

두 번째는 로컬 Docker Engine 공간을 사용합니다.

세 번째는 대용량 이미지는 저장 시간이 오래 걸릴 수 있습니다.

네 번째는 운영 배포 목적이라면 --push를 사용하는 것이 좋습니다.

Best Practice

Docker Buildx Build –load 활용 방법:

  • 로컬 테스트는 –load 사용
  • 운영 배포는 –push 사용
  • 멀티 플랫폼은 Registry Push 사용
  • 빌드 후 docker images 확인
  • 테스트 완료 후 Registry 업로드
  • 개발 환경과 운영 환경을 분리

자주 묻는 질문

Docker Buildx Build –load는 무엇인가요?

Buildx로 생성한 이미지를 로컬 Docker Engine에 저장하는 옵션입니다.

왜 Buildx 이미지는 바로 보이지 않나요?

Buildx는 BuildKit 출력 방식을 사용하기 때문에 기본적으로 로컬 저장을 하지 않을 수 있습니다.

–load와 –push를 같이 사용할 수 있나요?

일반적으로 함께 사용할 수 없습니다.

저장 목적이 다릅니다.

멀티 플랫폼 빌드에서도 사용할 수 있나요?

제한적입니다.

멀티 플랫폼은 보통 --push를 사용합니다.

마무리

Docker Buildx Build –load는 빌드한 이미지를 로컬 환경에서 바로 사용하기 위한 중요한 옵션입니다.

개발 과정에서 Docker 이미지를 테스트하거나 Docker Compose 환경에서 검증할 때 매우 유용하며, docker imagesdocker run을 통해 바로 확인할 수 있습니다.

반면 운영 배포나 멀티 플랫폼 이미지는 --push 방식이 적합합니다.

Docker Buildx에서는 목적에 따라 --load--push를 구분하여 사용하는 것이 안정적인 이미지 관리 방법입니다.

댓글 남기기