17일차_어디서든 실행할 수 있는 도커 이미지 만들기: 리눅스, 윈도, 인텔, ARM

최지웅·2024년 12월 19일
0

인프라

목록 보기
23/31

16-1. 다중 아키텍처 이미지가 중요한 이유

  • 도커 데스크톱은 ARM 아키텍처에서 이미지를 빌드하고 컨테이너를 실행할 수 있는 에뮬레이션 기능을 제공한다.
  • 닷넷 코어 플랫폼은 ARM프로세서에서도 동작하기에 크로스 플랫폼 빌드가 가능하다.
# 1. ARM 에뮬레이션 기능을 이용해 이미지 빌드
cd ch16/exercises

docker build -t diamol/ch16-whoami:linux-arm64 --platform linux/arm64 ./whoami # 64비트 ARM프로세서용 빌드(플랫폼 인자로 지정)

dokcer image inspect diamol/ch16-whoami:linux-arm64 -f '{{.0s}}/{{.Architecture}}'

dokcer info -f '{{.OSType}}/{{.Architecture}}' # 도커 엔진의 네이티브 아키텍처와 비교
  • 기본적으로 이미지의 아키텍처가 도커 엔진의 아키텍처와 일치해야하지만, 예외로 리눅스는 내려받기가 가능하다(실행 시 오류)

16-2. 다중 아키텍처 이미지를 만들기 위한 Dockerfile 스크립트

  • 첫번째 방법으로, 멀티 스테이지 Dockerfile스크립트로 컨테이너에서 소스를 빌드하고 패키징하는 방법(여러 컴에서 하나의 Dockerfile스크립트를 빌드)이 있다.
# 1. 플랫폼별 이미지 빌드
cd ./folder-list

docker image bulid -t diamol/ch16-folder-list:linux-amd64 -f ./Dockerfile.linux-amd64 . # 네이티브 아키텍처(인텔/AMD)

docker image bulid -t diamol/ch16-folder-list:linux-amd64 -f ./Dockerfile.linux-amd64 --platform linux/arm64 . # 64비트 ARM아키텍처

docker image bulid -t diamol/ch16-folder-list:linux-amd64 -f ./Dockerfile.linux-amd64 # 네이티브 아키텍처(인텔/AMD) --platform linux/arm . # 32비트 ARM아키텍처

docker container run diamol/ch16-folder-list:linux-amd64 # 실행 내용 확인
docker container run diamol/ch16-folder-list:linux-arm
docker container run diamol/ch16-folder-list:linux-amd64
  • 서드파티 애플리케이션의 다중 아키텍처 버전 이미지를 만들고 싶은 경우 위처럼 Dockerfile 스크립트를 여러 개 만드는 방법을 사용해야한다. 만약 직접 만든 어플리케이션의 Dockerfile스크립트를 단일로 만든다면, 모든 운영체제에서 공통적으로 사용할 수 있는 명령어만 사용해야한다.

16-3. 다중 아키텍처 이미지를 레지스트리에 푸시하기

16-4. 도커 Buildx를 사용해 다중 아키텍처 이미지 빌드하기

  • docker build의 확장판으로 간단하게 --platform 옵션으로 여러 아키텍처의 이미지를 쉽게 빌드하고 푸시 가능

16-5. 개발 로드맵과 다중 아키텍처 이미지

profile
이제 3학년..

0개의 댓글