>백엔드 개발 >Golang >Docker 스크래치 이미지를 사용할 때 '해당 파일 또는 디렉터리 없음' 오류를 수정하는 방법은 무엇입니까?

Docker 스크래치 이미지를 사용할 때 '해당 파일 또는 디렉터리 없음' 오류를 수정하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-03 08:56:40579검색

How to Fix the

Docker 스크래치 이미지 관련 "no such file ordirectory" 오류 문제 해결

스크래치 기본 이미지로 Docker 이미지를 빌드할 때 다음과 같은 문제가 발생할 수 있습니다. "standard_init_linux.go:207: exec 사용자 프로세스로 인해 "해당 파일이나 디렉터리가 없습니다"라는 오류가 발생했습니다. 이 문제는 스크래치 이미지에서 특정 종속성 또는 라이브러리를 사용할 수 없을 때 발생할 수 있습니다.

가능한 원인

오류는 일반적으로 바이너리 실행 파일이 없거나 이름이 잘못되었음을 나타냅니다. . 또는 바이너리가 스크래치 이미지에 없는 라이브러리에 동적으로 연결되어 있음을 의미할 수도 있습니다.

해결책: CGO 비활성화

이 문제를 해결하려면, Go 빌드 프로세스 중에 CGO(C Go)를 비활성화하는 것을 고려하십시오. CGO는 Go 프로그램이 기본 C 코드와 상호 작용할 수 있게 해주는 기능이지만 이로 인해 C 표준 라이브러리(libc)에 대한 동적 링크가 발생할 수 있습니다.

CGO를 비활성화하면 바이너리가 없이 정적으로 링크되도록 할 수 있습니다. 모든 외부 종속성. CGO를 비활성화하려면 다음 명령을 사용하십시오.

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
    -ldflags="-w -s" -o $PROJ_BIN_PATH ./cmd/...

동적 링크 확인

이미지를 빌드한 후 ldd 명령을 사용하여 CGO에서 동적 링크를 확인할 수 있습니다. 바이너리:

docker build --target=0 -t your_go_image .
docker run -it --rm your_go_image ldd /$PROJ_NAME

ldd의 출력이 동적 링크를 나타내는 경우 해당 종속성을 조사해야 할 수 있으며 Docker 이미지에 포함되어 있는지 확인하세요.

위 내용은 Docker 스크래치 이미지를 사용할 때 '해당 파일 또는 디렉터리 없음' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.