반응형

 

buildah 를 이용하여 arm 아키텍처에서 amd 로 multi platform 빌드를 수행하는 도중 계속 아래와 같은 에러가 발생했다.

exec container process `/bin/sh`: Exec format error

 

docker 또는 buildah로 multi platform 빌드할 경우 아키텍처 옵션을 주면 해결된다고 하였으나, 되지않았고

qemu-user-static 을 설치해주니 잘동작하였다.

qemu-user-static 은 다양한 아키텍처를 실행해주는 소프트웨어이다.

apt-get update -y
apt-get install qemu-user-static

 

설치 후 다른 사용법은 없으며, 그냥 아키텍쳐 옵션을 주면 빌드가된다.

 buildah build --arch=amd64 -f Dockerfile -t wky.kr/test:latest .

 

또한, amd64로 이미지를 생성한 후 arm 아키텍처에서 해당 amd64 이미지 k8s에서 실행하여도

qemu-user-static 으로 인하여 실행이된다.

 

참고 : https://github.com/multiarch/qemu-user-static

https://github.com/containers/buildah/blob/main/docs/buildah-build.1.md

반응형
반응형

 

shell script 작성 후 shell script를 실행 시키는 image 를 Alpine linux 로 이미지 생성 후 Pod 실행시

No such file or directory 에러가 발생하였다.

 

확인해보니 shell script 제일 상단에 #!/bin/bash 가 문제였고

Alpine linux 의 경우 shell script 제일 상단에 #!/bin/sh 로 해주어야한다.

#!/bin/bash -> #!bin/sh

 

bash를 사용해야하는 경우라면 bash를 추가해서 사용하면 된다.

apk add bash

 

반응형
반응형

 

Docker 대신 image를 만들 수 있는 도구

기본적으로 Docker 명령어와 동일한 듯 하다.

 

1. install

sudo apt install buildah

 

2. build

buildah build -f Dockerfile -t fedora-httpd .
# or
buildah build -t fedora-httpd

 

3. push 

buildah push registry.example.com/my_image

 

https://github.com/containers/buildah/blob/main/docs/tutorials/01-intro.md

https://github.com/containers/buildah/blob/main/docs/buildah-push.1.md

반응형

+ Recent posts