Search
Duplicate

Docker buildx로 멀티 아키텍처 플랫폼 image 만들기(1)

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Docker
Scrap
태그
buildx
9 more properties
라즈베리파이를 이것저것 가지고 놀다가 맥에서는 돌아가는 image파일이 라즈베리파이에선 동작을 하지 않는다는 것을 알았다. 무슨 문제일까?
42과제를 진행하면서 만든 ft_server image로 테스트 해보았다.

준비물

라즈베리파이
docker image
개인 pc
docker hub 계정

Mac OS(intel)와 라즈베리파이는 아키텍처가 다르다!

우선 현재 접속한 기기의 아키텍처를 알아보자!
$ uname -a
Shell
복사
우선 라즈베리파이를 보면 armv7으로 나오는 것을 알 수 있다.
Mac OS는 x86으로 나오므로 amd64인것을 알 수 있다.
그렇다면 Mac OS에서 build한 image를 그대로 라즈베리파이에서 실행시킨다면 어떻게 될까?

맥에서 build한 image를 라즈베리파이에서 실행한다면?

우선 준비한 라즈베리파이에 ssh로 연결해보자.
이제 라즈베리파이에서 실행할 image를 준비하자!

Docker image push!

Dockerfile이 있는 디렉토리에서 docker image를 build한다.
이때, 이름 형식을 맞춰주어야 한다. [docker id]/[name]
Docker hub에 로그인한뒤 이제 만들어둔 이미지를 push해보자
$ docker push [image name]
Shell
복사
터미널에서 docker hub 로그인하기

Docker hub에서 방금 푸시한 image 확인하기

이제 Docker hub에 들어가서 내 image가 잘 나오는지 확인하자.
아래 그림처럼 나온다면 성공!

라즈베리파이에서 Docker image pull!

아까 접속해 두었던 라즈베리파이로 돌아가자! 그리고 pull명령을 사용해서 이미지를 받아오자!
$ docker pull [image name]
Shell
복사

docker run... 그러나 ㅜㅜ

위의 단계까지 너무나 순조롭게 진행되어서 "어? 이러다 되는거 아니야?" 라고 생각하는 순간.. 내가 기다리던 에러가 드디어 나왔다..
에러가 나오기를 기다린다는게 조금은 이상하지만.. 실행이 안될 것이라고 예상했기 때문에 테스트는 성공적이였다.
$ docker run -dit -p 80:80 -p 443:443 rkskekzzz/ft_server
Shell
복사
그렇다면 이렇게 아키텍처가 다른 플랫폼에서 Docker image를 실행시킬 방법이 없는 것일까?
(사실 제목에서 다 스포했지만..)

가능하다!!

바로 Docker buildx를 사용하면 multi-architecture-platform image를 build할 수 있다. 2편에서는 본격적으로 buildx사용법을 다뤄보자!

Docker buildx로 멀티 아키텍처 플랫폼 image 만들기(2)