멀티 아키텍처 이미지 준비
이 단계에서는 멀티 아키텍처 이미지를 준비합니다. 멀티 아키텍처 이미지를 사용하면 amd64 및 arm64와 같은 서로 다른 아키텍처에서 실행할 수 있는 이미지를 빌드하고 푸시할 수 있습니다. 이는 클라우드 서버, 엣지 장치 및 로컬 머신을 포함한 다양한 환경에 애플리케이션을 배포하는 데 유용합니다.
먼저 Docker 에서 실험적 기능을 활성화해야 합니다. 이를 통해 멀티 아키텍처 이미지를 빌드하는 데 필요한 buildx 명령을 사용할 수 있습니다. Docker 구성 파일을 생성하거나 수정하여 이 작업을 수행할 수 있습니다.
nano를 사용하여 Docker 구성 파일을 엽니다.
nano ~/.docker/config.json
파일이 없으면 nano가 파일을 생성합니다. 파일에 다음 내용을 추가합니다. 파일이 이미 있는 경우 메인 JSON 객체 내에 "experimental": "enabled" 줄을 추가합니다.
{
"experimental": "enabled"
}
Ctrl + X, Y, Enter를 눌러 파일을 저장합니다.
다음으로, 여러 아키텍처를 지원하는 새로운 빌더 인스턴스를 생성해야 합니다. 빌더 인스턴스는 빌드 프로세스를 관리하는 Docker 구성 요소입니다.
mybuilder라는 새 빌더 인스턴스를 생성합니다.
docker buildx create --name mybuilder --use
이 명령은 mybuilder라는 새 빌더 인스턴스를 생성하고 후속 빌드 작업에 대한 기본 빌더로 설정합니다. 출력은 빌더가 생성되어 사용 중임을 나타내야 합니다.
이제 간단한 멀티 아키텍처 이미지를 빌드해 보겠습니다. Alpine Linux 를 기반으로 이미지를 생성하는 기본 Dockerfile을 사용합니다.
프로젝트용 디렉토리를 생성하고 해당 디렉토리로 이동합니다.
mkdir ~/project/multiarch-demo
cd ~/project/multiarch-demo
이 디렉토리에 Dockerfile을 생성합니다.
nano Dockerfile
Dockerfile에 다음 내용을 추가합니다.
FROM alpine:latest
CMD ["echo", "Hello from multi-architecture image!"]
Ctrl + X, Y, Enter를 눌러 Dockerfile을 저장합니다.
이제 linux/amd64 및 linux/arm64 아키텍처 모두에 대해 이미지를 빌드하고 더미 레지스트리에 푸시합니다. 레지스트리 자리 표시자로 localhost:5000을 사용합니다. 실제 시나리오에서는 이를 실제 레지스트리 주소로 바꿉니다.
멀티 아키텍처 이미지를 빌드하고 푸시합니다.
docker buildx build --platform linux/amd64,linux/arm64 -t localhost:5000/multiarch-demo:latest --push .
이 명령은 지정된 플랫폼 (linux/amd64 및 linux/arm64) 에 대한 이미지를 빌드하고, localhost:5000/multiarch-demo:latest로 태그를 지정하고, localhost:5000 레지스트리에 푸시합니다. 출력은 각 아키텍처에 대한 빌드 프로세스와 푸시 작업을 보여줍니다.