Docker 실행 오류: exec /app/backend/server: 해당 파일 또는 디렉터리가 없습니다.

WBOY
풀어 주다: 2024-02-08 21:21:18
앞으로
1117명이 탐색했습니다.

Docker 运行错误:exec /app/backend/server:没有这样的文件或目录

Docker를 사용할 때 "exec /app/backend/server: 해당 파일 또는 디렉터리가 없습니다"라는 오류 메시지와 같은 일부 실행 오류가 발생할 수 있습니다. 이 오류는 혼란스러울 수 있으며 해결 방법을 모릅니다. 이 문제에 대해 PHP 편집자 Yuzai는 모든 사람에게 도움이 되기를 바라며 몇 가지 솔루션을 제공했습니다. 다음으로 이 문제를 해결하는 방법을 살펴보겠습니다.

질문 내용

Docker 컨테이너를 실행하는 데 문제가 있습니다. Dockerfile에서 이미지를 만들었습니다.

으아악

실행:

으아악

오류가 발생했습니다:

으아악

Docker Desktop에서 확인해 보니 컨테이너 내부에 파일이 존재하며 있어야 할 위치에 생성되어 있는 것을 볼 수 있습니다.

두 번째 단계를 FROM golang:1.21-alpine으로 변경해 보았지만 여전히 같은 오류가 발생했습니다.

from gcr.io/distroless/base-debian11을 사용하면 다음을 얻을 수 있습니다.

으아악

여기, 여기 보고 이것저것 많이 시도해 봤습니다. 저는 Docker를 처음 접했고 이 문제를 해결하는 방법을 모릅니다. 누구든지 이 오류의 원인과 해결 방법을 이해하도록 도와줄 수 있습니까? 미리 감사드립니다!

내 Dockerfile은 다음과 같습니다.

docker build -t server -f ./backend/Dockerfile .
로그인 후 복사

해결 방법

간단한 dockerfile 및 응용 프로그램을 사용하여 문제를 복제했습니다(최소하고 재현 가능한 예제를 제공해 주세요. 사용 중인 sqlite 라이브러리가 무엇인지 추측해야 했습니다).

backend.go

으아악

dockerfile:

으아악

컨테이너에서 셸을 시작하면(docker run -it --entrypoint /bin/sh server) 실행 파일이 있고 권한은 양호하지만 실행되지 않는 것을 볼 수 있습니다.

으아악

"찾을 수 없음" 오류를 쉽게 볼 수 있으며 파일이 예상한 위치에 없거나 잘못된 권한이 있기 때문에 발생한 것이라고 생각하기 쉽습니다. 그러나 실행 파일이 의존하는 항목이 누락된 경우에도 동일한 오류가 표시됩니다. lddldd 显示问题 - 可执行文件依赖于 fcntl64;该库由 glibc 提供,但不是 musl (如 Alpine 中使用的 - glibc musl 표시 문제 - 실행 파일은 fcntl64에 따라 다릅니다. >;이 라이브러리는 glibc에서 제공되지만 musl에서는 제공되지 않습니다(Alpine에서 사용됨 - glibc musl). between code>는 흔하지 않습니다

).

가장 간단한 해결책은 애플리케이션이 실행되는 것과 동일한 운영 체제를 사용하여 애플리케이션을 컴파일하는 것입니다.

으아악

그런 다음 다음을 실행하세요(실행 파일의 출력은 없지만 데이터베이스가 생성되었음을 확인했습니다):

으아악 또 다른 옵션은 pure go 라이브러리

를 사용하는 것입니다(CGO가 필요하지 않음). 🎜

위 내용은 Docker 실행 오류: exec /app/backend/server: 해당 파일 또는 디렉터리가 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿