728x90
반응형
기기마다 다른 플랫폼이나 아키텍처를 가진다. 내가 원하는 환경에서 구동되면 좋겠지만 그게 아니라면 그것들을 위한 환경을 만들어줘야 한다.
1) 아키텍처 확인하기
uname -a
접속한 기기의 아키텍처를 알 수 있다.
Ubuntu에서 build한 image를 iot등에 실행시킨다면 아키텍처가 다르다.
2) docker 버전 확인하기
우선 docker 19.03 버전부터 사용이 가능하므로 설치되어 있는 docker의 버전을 확인해준다.
3) buildkit 환경셋팅해주기
sudo mkdir /etc/buildkit
sudo vi /etc/buildkit/buildkitd.toml
debug = true
root = "/var/lib/buildkit"
insecure-entitlements = ["network.host", "security.insecure"]
[registry."기기2.고정.ip:5000"]
http = true
insecure = true
- debug : 추가적인 디버깅 로그를 활성화한다.
- trace : 추가적인 추적 로그를 활성화한다.
- root : buildkit 장소에 저장한다.
- registry ~ : 레지스트리의 출력과 캐시 가져오기에 사용되는 새로운 도커를 구성하기 위한 설정들
4) cross-platform 빌더 클래스 생성 및 실행하기
docker buildx create --use --name <name> --buildkitd-flags '--allow-insecure-entitlement security.insecure' --config=/etc/buildkit/buildkitd.toml --driver-opt image=moby/buildkit:buildx-stable-1
- —-name : builder name
- —-driver : (available : []) docker : docker daemon에 내장된 builder를 사용 docker-container : docker를 통해 생성된 buildkit container를 사용, 이 드라이버를 사용하면 multi-platform image를 내보내거나 캐싱이 가능(하지만 docker image에 자동으로 나타나지 않음) kubernetes : kubernetes 포드를 사용, 포드를 스핀업 하여 사용가능
- —-use : 현재 builder를 기본사용으로 지정
- —-platform 옵션을 사용하여 해당 builder의 build platform을 고정할 수 있다.
docker buildx inspect --bootstrap
5) 다양한 아키텍처에서 사용 가능하게 하기
docker run --privileged --rm tonistiigi/binfmt --install all
6) multi-platform image 만들기
docker buildx build . -t 192.168.0.101:5000/<이미지이름>:<태그> --platform=linux/arm64,linux/amd64 --push
예시
테스트할 os가 라즈베리파이일 때 아키텍처는 linux/arm/v7이다. 아래와 같이 치면 우리가 만들고자 하는 multi-platform 이미지가 만들어진다.
$ docker buildx build --platform linux/arm/v7 -t \\
rkskekzzz/ft_server_multiplatform --push .
7) 빌드 확인하기
두가지 방법 존재한다. 첫 번째 방법은 간략한 정보만, 두번 째 방법은 도커 레지스트리에 접속하여 생성된 이미지에 접근할 수 있다.
7-1) buildx
docker buildx imagetools inspect <ip>:5000/<image>:<tag>
7-2) docker command
docker exec -it registry sh
Buildx의 기본 명령어
1) Builder Instance 확인
$ docker buildx ls
2) Builder version 확인
$ docker buildx version
3) Builder instance 중지 / 제거
$ docker buildx stop
$ docker buildx rm
👇🏻 참고
https://80000coding.oopy.io/c9ffa4b5-c25a-40eb-9ce3-93af59fb1201
https://github.com/moby/buildkit/blob/master/docs/buildkitd.toml.md
728x90
반응형