容器中的命令失败:使用 VSCode 的 DevContainer 中的 helpers/check-requirements.sh

问题描述 投票:0回答:1

我尝试在 VSCode 中使用 devcontainer 运行一个项目(模式:在没有缓存的情况下重建并在容器中重新打开),但收到此错误:

[2024-05-20T19:27:02.595Z] 
[2024-05-20T19:27:02.596Z] Stop (10 ms): Run in container: test -x '/root/.vscode-server/bin/dc96b837cf6bb4af9cd736aa3af08cf8279f7685/bin/helpers/check-requirements.sh'
[2024-05-20T19:27:02.598Z] Start: Run in container: '/root/.vscode-server/bin/dc96b837cf6bb4af9cd736aa3af08cf8279f7685/bin/helpers/check-requirements.sh'
[2024-05-20T19:27:02.735Z] 
[2024-05-20T19:27:02.738Z] 
[2024-05-20T19:27:02.738Z] Exit code 1
[2024-05-20T19:27:02.738Z] Stop (140 ms): Run in container: '/root/.vscode-server/bin/dc96b837cf6bb4af9cd736aa3af08cf8279f7685/bin/helpers/check-requirements.sh'
[2024-05-20T19:27:02.783Z] Command in container failed: '/root/.vscode-server/bin/dc96b837cf6bb4af9cd736aa3af08cf8279f7685/bin/helpers/check-requirements.sh'
[2024-05-20T19:27:02.786Z] Exit code 1

我的 VSCode 信息:

Version: 1.89.1
Commit: dc96b837cf6bb4af9cd736aa3af08cf8279f7685
Date: 2024-05-07T05:14:24.611Z (1 wk ago)
Electron: 28.2.8
ElectronBuildId: 27744544
Chromium: 120.0.6099.291
Node.js: 18.18.2
V8: 12.0.267.19-electron.0
OS: Darwin x64 21.6.0

我尝试使用这些 DevContainer 版本:0.366.0、0.354.0

有人也有这个问题吗?有谁知道如何解决吗

OBS: 我正在使用 distroless docker 映像(到 python)。使用常规 docker 映像,我可以运行 devcontainer。

visual-studio-code vscode-devcontainer
1个回答
0
投票

不建议使用 distroless docker 镜像来运行 Dev Container。

这是关于原因的完整解释(参考这里):

Distroless 镜像是最小镜像,不包含包管理器、shell 或您期望在标准 Linux 发行版中找到的任何其他程序。这对于安全性来说非常有用,但是当您需要在容器内安装其他软件或调试问题时,这可能会让事情变得困难。

开发容器功能依赖于某些可用的实用程序 容器,例如执行命令和脚本的 shell。如果 这些实用程序不可用,就像 distroless 的情况一样 图片,您可能会遇到问题。

您看到的错误消息表明 check-requirements.sh 脚本失败,因为找不到 shell 运行脚本。这是 distroless 镜像的预期行为, 因为它们不包含外壳。

如果您需要无发行映像的安全优势,您可能会 考虑使用多阶段 Docker 构建。在第一阶段,您可以 使用功能齐全的基础映像来编译您的应用程序并安装 依赖关系。第二阶段,可以复制编译好的 应用程序从第一阶段变成无发行镜像。这边走, 您无需牺牲开发人员即可获得最小的运行时映像 经验。

但是,使用 distroless 镜像作为 DevContainer 基础镜像并不适用 推荐,因为它可能会因缺失而导致问题 公用设施。

© www.soinside.com 2019 - 2024. All rights reserved.