728x90
우분투 24.04에서 Docker를 사용하여 멀티 플랫폼 빌드를 지원하고 설정하는 방법
Docker에서 멀티 플랫폼 빌드(Multi-Platform Build)를 사용하려면 Docker Buildx를 활성화하고 설정해야 합니다. 멀티 플랫폼 빌드는 다양한 아키텍처(예: linux/amd64, linux/arm64)를 타겟으로 이미지를 빌드하는 데 유용합니다.
테스트 환경
$ lsb_release -d
Description: Ubuntu 24.04.1 LTS
1. 멀티 플랫폼 빌드 지원 확인
Docker는 기본적으로 멀티 플랫폼 빌드를 지원합니다.
Docker 버전 확인
docker version --format '{{.Server.Version}}'
27.5.1
Docker Buildx 지원 여부 확인
- 버전이 출력되면 Buildx가 설치되어 있고 사용 가능합니다.
docker buildx version
github.com/docker/buildx v0.20.0 8e30c46
2. Docker Buildx 활성화 및 설정
Buildx는 Docker에 기본 포함되어 있습니다. 활성화하려면 Buildx를 디폴트 빌더로 설정합니다.
실행하면 새로운 빌더가 생성되고 기본 빌더로 설정됩니다.
docker buildx create --name mybuilder --use
mybuilder
docker buildx inspect mybuilder --bootstrap
$ docker buildx inspect mybuilder --bootstrap
[+] Building 15.3s (1/1) FINISHED
=> [internal] booting buildkit 15.3s
=> => pulling image moby/buildkit:buildx-stable-1 12.1s
=> => creating container buildx_buildkit_mybuilder0 3.2s
Name: mybuilder
Driver: docker-container
Last Activity: 2025-01-27 02:30:48 +0000 UTC
Nodes:
Name: mybuilder0
Endpoint: unix:///var/run/docker.sock
Status: running
BuildKit daemon flags: --allow-insecure-entitlement=network.host
BuildKit version: v0.18.2
Platforms: linux/amd64, linux/amd64/v2, linux/386
Labels:
org.mobyproject.buildkit.worker.executor: oci
org.mobyproject.buildkit.worker.hostname: 3e0968253d36
org.mobyproject.buildkit.worker.network: host
org.mobyproject.buildkit.worker.oci.process-mode: sandbox
org.mobyproject.buildkit.worker.selinux.enabled: false
org.mobyproject.buildkit.worker.snapshotter: overlayfs
GC Policy rule#0:
All: false
Filters: type==source.local,type==exec.cachemount,type==source.git.checkout
Keep Duration: 48h0m0s
Max Used Space: 488.3MiB
GC Policy rule#1:
All: false
Keep Duration: 1440h0m0s
Reserved Space: 7.451GiB
Max Used Space: 59.6GiB
Min Free Space: 14.9GiB
GC Policy rule#2:
All: false
Reserved Space: 7.451GiB
Max Used Space: 59.6GiB
Min Free Space: 14.9GiB
GC Policy rule#3:
All: true
Reserved Space: 7.451GiB
Max Used Space: 59.6GiB
Min Free Space: 14.9GiB
728x90
3. 멀티 플랫폼 빌드 확인 및 테스트
지원 플랫폼 확인
- Docker가 지원하는 플랫폼 목록을 확인합니다.
docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS
mybuilder* docker-container
\_ mybuilder0 \_ unix:///var/run/docker.sock running v0.18.2 linux/amd64 (+2), linux/386
default docker
\_ default \_ default running v0.18.2 linux/amd64 (+2), linux/386
Dockerfile 작성
- Github
git clone https://github.com/anti1346/samplefile.git
vim Dockerfile
# 베이스 이미지 설정 (플랫폼에 따라 자동으로 최적화된 이미지를 가져옴)
FROM python:3.13-slim
# 메타데이터 추가 (이미지 설명)
LABEL maintainer="admin@scbyun.com" \
description="A simple multi-platform Docker image example" \
version="1.0"
# 컨테이너 내 작업 디렉토리 설정
WORKDIR /app
# 애플리케이션 파일 복사
COPY hello.py /app/hello.py
# Python 패키지 설치 (필요한 경우)
RUN apt update && \
apt install -y --no-install-recommends curl && \
apt clean && \
rm -rf /var/lib/apt/lists/*
# 스크립트 실행 명령어 설정
CMD ["python", "/app/hello.py"]
간단한 멀티 플랫폼 빌드 테스트
- --platform 옵션으로 빌드 대상 플랫폼을 지정합니다.
docker buildx build --platform linux/amd64 -t anti1346/samplefile:latest --load .
빌드 후 플랫폼 확인
- 이미지가 빌드되었다면 다음 명령어로 플랫폼 정보를 확인할 수 있습니다.
docker inspect anti1346/samplefile:latest --format='{{.Architecture}}'
컨테이너 실행
docker run anti1346/samplefile:latest
우분투에서 Docker 멀티 플랫폼 빌드가 활성화됩니다.
728x90
'리눅스' 카테고리의 다른 글
[draft] 우분투에서 최신 버전의 Ansible을 설치하는 방법 (0) | 2025.02.04 |
---|---|
[draft] Laravel에서 Hello World를 출력하는 방법 (0) | 2025.02.02 |
[draft] 우분투에서 ModemManager 데몬을 비활성화하는 방법 (0) | 2025.01.23 |
[draft] NGINX에서 리다이렉트할 때 클라이언트가 보내는 HTTP 메서드를 그대로 유지하는 방법 (0) | 2025.01.21 |
[draft] Docker 실험적 기능(Docker Experimental Features) (0) | 2025.01.19 |