ホームページ >バックエンド開発 >Golang >Docker Scratch イメージが「そのようなファイルまたはディレクトリはありません」エラーを返すのはなぜですか?

Docker Scratch イメージが「そのようなファイルまたはディレクトリはありません」エラーを返すのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-29 19:14:14469ブラウズ

Why Does My Docker Scratch Image Return a

Docker スクラッチ イメージによる「そのようなファイルまたはディレクトリはありません」エラーのトラブルシューティング

Docker スクラッチ イメージは、コンテナーを実行するための最小限のランタイム環境を提供します。ただし、スクラッチ イメージで Dockerfile を使用すると、「standard_init_linux.go:207: exec user process crashed 'no such file or directory'」というエラーが発生する場合があります。

原因と解決策

このエラーは、CGO ビルドを使用していない場合に発生する可能性があります。 CGO (CGO は「C Go」の略です。Go プログラミングの文脈では、Go プログラム内で C コードを呼び出す機能を指します) ビルドにより、libc や libmusl などのライブラリへの動的リンクが作成されます。この問題を解決するには、次の行を Dockerfile に追加して CGO を無効にします:

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

その他の考慮事項

さらに、次の点を確認してください:

  • バイナリの名前が正しいことを確認してください。
  • バイナリが動的にリンクされている場合は、必要なライブラリが存在することを確認してください。
  • 以下の例に示すように、ldd コマンドを使用して動的リンクを検査できます。
docker build --target=0 -t your_go_image .
docker run -it --rm your_go_image ldd /$PROJ_NAME

以上がDocker Scratch イメージが「そのようなファイルまたはディレクトリはありません」エラーを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。