【问题标题】:Error when opening a VSCode remote-container from a project using a Dockerfile and devcontainer.json使用 Dockerfile 和 devcontainer.json 从项目打开 VSCode 远程容器时出错
【发布时间】:2023-02-25 13:28:52
【问题描述】:

我正在 VSCode 远程容器(在同一台机器上)中开发解决方案。一个项目需要一张在 VSCode 容器选择对话框中不可用的图像。有问题的图片是databricksruntime/standard,可以在here 找到。

我需要 Dockerfiledevcontainer.json 定义一起使用,以便容器符合该规范。我通过导航到 associated Git 找到了 Dockerfile 内容。

FROM databricksruntime/dbfsfuse:experimental

RUN apt-get update \
  && apt-get install -y openssh-server \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Warning: the created user has root permissions inside the container
# Warning: you still need to start the ssh process with `sudo service ssh start`
RUN useradd --create-home --shell /bin/bash --groups sudo ubuntu

我在构建容器时手动创建了 devcontainer.json 以定位 Dockerfile 图像。

{
    "name": "databricksruntime/standard",
    "build": {
        "dockerfile": "Dockerfile",
        "context": ".."
    },
  
    "customizations": {
      "vscode": {
        "extensions": ["dbaeumer.vscode-eslint"]
      }
    },
  
    "remoteUser": "vscode",
    "features": {
      "git": "latest",
      "git-lfs": "latest"
    }
  }

我选择了“打开远程窗口”(VSCode GUI 的左下角)->“在容器中重新打开”。

这提出:

[2022-08-05T17:01:32.739Z]来自守护程序的错误响应:databricksruntime/dbfsfuse 的清单:实验未找到:清单未知:清单未知

[2022-08-05T17:01:32.832Z] 停止(2843 毫秒):运行:docker pull databricksruntime/dbfsfuse:experimental

[2022-08-05T17:01:32.833Z] []

[2022-08-05T17:01:32.833Z]错误:没有这样的图像:databricksruntime/dbfsfuse:experimental

当我们检查 Dockerfile 时,我们可以看到它是 references another image。我查看了拉命令 docker pull databricksruntime/dbfsfuse 并在终端中运行了它。该图像已经存在并且在 Docker GUI 中可见。我注意到 pull 命令不包含后缀 :experimental,而 Dockerfile 中的第一行包含后缀。我删除了后缀。 Dockerfile 现在构建。

[+] Building 67.0s (17/17) FINISHED
 => [internal] load build definition from Dockerfile-with-features         0.1s
 => => transferring dockerfile: 844B                                       0.0s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 2B                                            0.0s
 => resolve image config for docker.io/docker/dockerfile:1.4               2.0s
 => [auth] docker/dockerfile:pull token for registry-1.docker.io           0.0s
 => CACHED docker-image://docker.io/docker/dockerfile:1.4@sha256:443aab4c  0.0s
 => [internal] load .dockerignore                                          0.0s
 => [internal] load build definition from Dockerfile-with-features         0.0s
 => [internal] load metadata for docker.io/databricksruntime/dbfsfuse:lat  0.0s
 => [context dev_containers_feature_content_source] load .dockerignore     0.0s
 => => transferring dev_containers_feature_content_source: 2B              0.0s
 => [dev_container_auto_added_stage_label 1/3] FROM docker.io/databricksr  0.2s
 => [context dev_containers_feature_content_source] load from client       0.1s
 => => transferring dev_containers_feature_content_source: 270.81kB        0.0s
 => [dev_container_auto_added_stage_label 2/3] RUN apt-get update   && a  22.2s
 => [dev_container_auto_added_stage_label 3/3] RUN useradd --create-home   0.6s
 => [stage-1 1/2] COPY --from=dev_containers_feature_content_source . /tm  0.1s
 => [stage-1 2/2] RUN cd /tmp/build-features/local-cache && chmod +x ./i  41.0s
 => exporting to image                                                     0.0s
 => => exporting layers                                                    0.0s
 => => writing image sha256:aa97f07c0ec4c2e8ae9d512da1bc45b63b32396266134  0.0s
 => => naming to docker.io/library/vsc-parallelloadsscd4-d62f8c81c6e595b4  0.0s
 => exporting cache                                                        0.0s
 => => preparing build cache for export                                    0.0s

容器被启动然后被测试。另一个错误提出:

[70182 毫秒] Shell 服务器终止(代码:126,信号:空)

[70182 毫秒] 无法找到用户 vscode:密码文件中没有匹配的条目

[2022-08-05T17:10:05.189Z] 开始:在容器中运行:cat /etc/passwd

[2022-08-05T17:10:05.189Z] 标准输入已关闭! [2022-08-05T17:10:05.190Z]

错误:设置容器时发生错误。 [2022-08-05T17:10:05.190Z] 在 HR (c:\Users\mruser.vscode\extensions\ms-vscode-remote.remote-containers-0.241.3\dist\spec-node\devContainersSpecCLI.js:239:2183) [2022-08-05T17:10:05.190Z] 待定 (c:\Users\mruser.vscode\extensions\ms-vscode-remote.remote-containers-0.241.3\dist\spec-node\devContainersSpecCLI.js:239:2121)

[2022-08-05T17:10:05.190Z] 在 processTicksAndRejections (节点:内部/进程/task_queues:96:5)[2022-08-05T17:10:05.190Z]
在异步 QR (c:\Users\mruser.vscode\extensions\ms-vscode-remote.remote-containers-0.241.3\dist\spec-node\devContainersSpecCLI.js:245:2006)

[2022-08-05T17:10:05.190Z] 在异步 cb (c:\Users\mruser.vscode\extensions\ms-vscode-remote.remote-containers-0.241.3\dist\spec-node\devContainersSpecCLI.js:245:3110)

[2022-08-05T17:10:05.190Z] 在异步 i_ (c:\Users\mruser.vscode\extensions\ms-vscode-remote.remote-containers-0.241.3\dist\spec-node\devContainersSpecCLI.js:245:13194)

[2022-08-05T17:10:05.190Z] 在异步 n_ (c:\Users\mruser.vscode\extensions\ms-vscode-remote.remote-containers-0.241.3\dist\spec-node\devContainersSpecCLI.js:245:12950)

[2022-08-05T17:10:05.200Z] 停止(69586 毫秒):运行: C:\Users\mruser\AppData\Local\Programs\Microsoft VS Code\Code.exe c:\Users\mruser.vscode\extensions\ms-vscode-remote.remote-containers-0.241.3\dist\spec-node\devContainersSpecCLI.js 向上——用户数据文件夹 c:\Users\mruser\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data --workspace-folder c:\Users\mruser\source\repos\data\ParallelLoadsScd4 --workspace-mount-consistency 缓存 --id-label devcontainer.local_folder=c:\Users\mruser\source\repos\data\ParallelLoadsScd4 --log-level debug --log-format json --config c:\Users\mruser\source\repos\data\ParallelLoadsScd4.devcontainer\devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root true

[2022-08-05T17:10:05.200Z] 退出代码 1

[2022-08-05T17:10:05.204Z] 命令失败:C:\Users\mruser\AppData\Local\Programs\Microsoft VS Code\Code.exec:\Users\mruser.vscode\extensions\ms-vscode-remote.remote-containers-0.241.3\dist\spec-node\devContainersSpecCLI.js 向上——用户数据文件夹 c:\Users\mruser\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data --workspace-folder c:\Users\mruser\source\repos\data\ParallelLoadsScd4 --workspace-mount-consistency 缓存 --id-label devcontainer.local_folder=c:\Users\mruser\source\repos\data\ParallelLoadsScd4 --log-level debug --log-format json --config c:\Users\mruser\source\repos\data\ParallelLoadsScd4.devcontainer\devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root true

[2022-08-05T17:10:05.204Z] 退出代码 1

AVSCode 缺少用户.这个用户大概是为了让 VSCode 本地可以与 VSCode 远程交互。此用户在devcontainer.json 中定义为"remoteUser": "vscode",

我看过这个SO answer。我不确定如何定义此用户,需要更多阅读。

我修改了devcontainer.json来设置vscode 用户"remoteUser": "root",。这似乎是错误的。容器现在运行。我引用了this article

我是仍然调查这个。有人遇到过这个问题吗?我错过了什么?

【问题讨论】:

    标签: docker visual-studio-code dockerfile databricks


    【解决方案1】:

    这为我解决了错误 sudo snap install docker

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      相关资源
      最近更新 更多