mkdir ~/k8se-handson
cd ~/k8se-handson
git clone https://github.com/kakaoenterprise/kic-library-monolithic
cd ~/k8se-handson/kic-library-monolithic
docker build --tag kic-library-monolithic:latest .
Docker Hub는 Container Regusry로 생성한 컨테이너 이미지를 올리고 관리할 수 있습니다.
생성한 이미지의 태그를 수정하고 Docker Hub에 push 합니다.
moonsh1998부분에 여러분의 docker 이름을 적어주시면 됩니다.
docker login #(dokcer desktop이 켜져있으면 비밀번호를 안쳐도 바로 로그인이 됩니다)
docker tag kic-library-monolithic:latest docker.io/moonsh1998/kic-library-monolithic
docker image ls
docker push docker.io/moonsh1998/kic-library-monolithic
Container Registry에 업로드한 이미지를 쿠버네티스에서 배포할 수 있습니다.
#기본예제
kubectl create deployment library-monolithic --image=docker.io/moonsh1998/kic-library-monolithic
kubectl expose deployment library-monolithic \
--type=LoadBalancer --port=80 --target-port=8080
kubectl run library-monolithic --image=docker.io/moonsh1998/kic-library-monolithic
우선 어느 부분에서 에러가 발생했는지 로그부터 확인해보겠습니다.
exec format error의 원인 중 하나로 m1칩을 사용중인 맥북 유저가 빌드한 이미지를 m1칩 환경에서 run하는 것은 문제가 되지 않지만
m1칩 환경에서 build한 이미지를 다른 플랫폼 ex)ubuntu 환경에서 run하는것에 문제가 생길 수도 있다는 에러 원인을 찾았습니다.
우선 ~/.docker/config.json의 중괄호 안에 "experimental": "enabled"``를 추가해줍니다.
vi ~/.docker/config.json
docker image ls
docker image rm moonsh1998/kic-library-monolithic
이전에 제 이름을 넣은 이미지 태그를 삭제 후 이미지 빌드(태그)를 다시 해봅시다.
공식문서
docker build --tag kic-library-monolithic:latest .
바꿔야할 부분
docker buildx build --push --platform linux/amd64 -t kic-library-monothic .
docker image rm kic-library-monolithic:latest
docker buildx build --platform linux/amd64 --load kic-library-monolithic:latest