글

라벨이 Docker인 게시물 표시

Docker exec user process caused "exec format error" 에러 해결 방법

이미지
안녕하십니까.  AWS에 Docker를 통해서 클러스터를 구축하는 도중 에러가 발생하였습니다. 이에 관한 포스팅을 하려고 합니다. 에러 상황 CodeBuild에서 Dockerfile을 통해 이미지를 생성하는 도중 다음과 같은 에러가 발생하였습니다. 그리고 이미지가 빌드가 되지 않습니다. exec user process caused "exec format error" 같은 Dockerfile을 통해서 제 컴퓨터에서 docker build를 하니 에러가 발생하지 않고 잘 동작 합니다. 구글링을 해보니 아키텍쳐가 다르면 나올 수 있다고 합니다. 아래 명령어를 통해서 아키텍쳐를 확인해 봅니다. ( base ) myeongjoon @ myeongjoon-B365M-D3H:~ / .ssh$ uname -m x86_64   제 컴퓨터는 x86_64라고 되어 있습니다. 사용하는 ECS의 architecture를 확인해보니 aarch64라고 합니다. 이는 x86와는 다른 아키텍쳐이고 arm64계열 입니다.  host 운영체제와 해당 운영체에 위에서 돌아가는 docker container의 아키텍쳐 계열이 맞아야 정상적으로 명령어가 실행 된다고 합니다.  에러 해결 방안 1 호스트 - 이미지 아키텍쳐 통일 해결 방안 1은 간단 합니다. 호스트에서 사용하는 이미지와 도커 이미지 상의 아키텍쳐를 통일하는 것 입니다.  예를 들어서 다음과 같이 AWS CodeBuild에서 사용하는 host의 architecture를 설정할 수 있습니다. 현시각 기준 서울은 x86만 지원하는 단점이 있습니다.  이미지의 아키텍처를 확인하는 방법은 다음과 같습니다. 이미지의 태그 확인  예를 들어서 태그에서 아키텍쳐에 따른 이미지를 관리하는 경우가 있습니다.  이미지의 상위 이미지를 확인하기 각 이미지는 dockerfile을 가지고 있고, 이때 상위 이미지를 거슬러 올라가다 보면 맨 처음 이미지를 확인 할 수 있습니다. 에러 ...

Docker read init-p: connection reset by peer 해결법

이미지
안녕하십니까.  업무적으로 도커를 사용해서 컨테이너를 구축해야하게 되었습니다. 저는 현재 AWS의 ECS라는 도커 클러스터 클라우드를 사용하고 있는데요. 사용하는 도중에 화면에서 다음과 같은 에러를 확인하게 되었습니다. 에러 화면 아래의 화면은 AWS의 ECS에 올려놓은 서비스의 작업 상태 화면 입니다. 상태 사유쪽에 보면 에러가 남아있습니다.   CannotStartContainerError: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:319: getting the final child's pid from pipe caused \"read init-p: connection reset by peer\"": u 위는 ECS에서 작업을 실행하다가 발생한 에러 입니다.  컨테이너에서 확인하면 AWS의 CloudWatch에는 아무것도 남아있지 않습니다. 직접 원인을 파악하기 위해서 도커 EC2 인스턴스에 ssh로 접근하여 로그를 확인하였습니다.  docker ps 명령어로 확인하면 다음과 같습니다. Created 상태로 종료되어 있습니다. AWS에서 Created로 종료하지는 않을것이기에 무엇인가 문제가 있습니다. [ ec2-user @ ip- 10 - 0 - 0 - 27 ~ ] $ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0f769f5a4d3f 848413064369 .dkr.ecr.us-east- ...