【发布时间】:2023-02-25 13:28:52
【问题描述】:
我正在 VSCode 远程容器(在同一台机器上)中开发解决方案。一个项目需要一张在 VSCode 容器选择对话框中不可用的图像。有问题的图片是databricksruntime/standard,可以在here 找到。
我需要 Dockerfile 与 devcontainer.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