Ubuntu 20.04下无法运行VS Code Dev Container问题求助
问题
在Ubuntu 20.04环境下使用VS Code Dev Container时遇到报错。按照官方教程启动开发容器(比如Node示例仓库),从命令面板执行命令时,始终出现path /tmp/... not found错误。终端输出如下:
[19 ms] Dev Containers 0.384.0 in VS Code 1.93.0 (4849ca9bdf9666755eb463db297b69e5385090e3). [19 ms] Start: Resolving Remote [43 ms] Start: Check Docker is running [43 ms] Start: Run: docker version [75 ms] Client: Version: 24.0.5 API version: 1.43 Go version: go1.20.14 Git commit: ced0996 Built: Tue Jun 25 22:37:33 2024 OS/Arch: linux/amd64 Context: default Server: Engine: [76 ms] Version: 24.0.5 API version: 1.43 (minimum version 1.12) Go version: go1.20.14 Git commit: a61e2b4 Built: Tue Jun 25 22:38:06 2024 OS/Arch: linux/amd64 Experimental: false containerd: Version: v1.6.21 GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8 runc: Version: 1.1.12 GitCommit: docker-init: Version: 0.19.0 GitCommit: de40ad0 [81 ms] Start: Run: docker volume ls -q [114 ms] Start: Run: docker ps -q -a --filter label=vsch.local.volume=vscode-remote-try-node-d773fe6db837e4b027e5be39a8a66cbe8f69ed4273833eb196b87fd108a6439a --filter label=vsch.quality=stable [142 ms] Start: Run: docker ps -q -a --filter label=vsch.local.volume=vscode-remote-try-node-d773fe6db837e4b027e5be39a8a66cbe8f69ed4273833eb196b87fd108a6439a --filter label=devcontainer.config_file=/tmp/vsch-myuser/inspect-volume/0.384.0/.devcontainer.json [172 ms] Start: Run: docker ps -q -a --filter label=vsch.local.volume=vscode-remote-try-node-d773fe6db837e4b027e5be39a8a66cbe8f69ed4273833eb196b87fd108a6439a [206 ms] Start: Run: docker ps -q -a --filter label=vsch.local.volume=vscode-remote-try-node-d773fe6db837e4b027e5be39a8a66cbe8f69ed4273833eb196b87fd108a6439a [235 ms] Running Dev Containers CLI: up --user-data-folder /home/myuser/.config/Code/User/globalStorage/ms-vscode-remote.remote-containers/data --container-session-data-folder /tmp/devcontainers-0ff0f5b5-71a2-4dcf-b0bf-403862739e9e1726049800766 --workspace-folder /tmp/vsch-myuser/inspect-volume/0.384.0 --workspace-mount-consistency cached --id-label vsch.local.volume=vscode-remote-try-node-d773fe6db837e4b027e5be39a8a66cbe8f69ed4273833eb196b87fd108a6439a --id-label devcontainer.config_file=/tmp/vsch-myuser/inspect-volume/0.384.0/.devcontainer.json --log-level debug --log-format json --config /tmp/vsch-myuser/inspect-volume/0.384.0/.devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode-remote-try-node-d773fe6db837e4b027e5be39a8a66cbe8f69ed4273833eb196b87fd108a6439a,target=/workspaces,external=true --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default never --mount-workspace-git-root --include-configuration --include-merged-configuration [235 ms] Start: Run: /usr/share/code/code /home/myuser/.vscode/extensions/ms-vscode-remote.remote-containers-0.384.0/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /home/myuser/.config/Code/User/globalStorage/ms-vscode-remote.remote-containers/data --container-session-data-folder /tmp/devcontainers-0ff0f5b5-71a2-4dcf-b0bf-403862739e9e1726049800766 --workspace-folder /tmp/vsch-myuser/inspect-volume/0.384.0 --workspace-mount-consistency cached --id-label vsch.local.volume=vscode-remote-try-node-d773fe6db837e4b027e5be39a8a66cbe8f69ed4273833eb196b87fd108a6439a --id-label devcontainer.config_file=/tmp/vsch-myuser/inspect-volume/0.384.0/.devcontainer.json --log-level debug --log-format json --config /tmp/vsch-myuser/inspect-volume/0.384.0/.devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode-remote-try-node-d773fe6db837e4b027e5be39a8a66cbe8f69ed4273833eb196b87fd108a6439a,target=/workspaces,external=true --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default never --mount-workspace-git-root --include-configuration --include-merged-configuration [414 ms] @devcontainers/cli 0.69.0. Node.js v20.15.1. linux 5.4.0-193-generic x64. [414 ms] Start: Run: docker buildx version [471 ms] github.com/docker/buildx v0.11.2 9872040b6626fb7d87ef7296fd5b832e8cc2ad17 [471 ms] [471 ms] Start: Run: docker -v [497 ms] Start: Resolving Remote [499 ms] Start: Run: git rev-parse --show-cdup [504 ms] Start: Run: docker ps -q -a --filter label=vsch.local.volume=vscode-remote-try-node-d773fe6db837e4b027e5be39a8a66cbe8f69ed4273833eb196b87fd108a6439a --filter label=devcontainer.config_file=/tmp/vsch-myuser/inspect-volume/0.384.0/.devcontainer.json [533 ms] Start: Run: docker inspect --type image mcr.microsoft.com/devcontainers/base:0-alpine-3.20 [562 ms] Loading 138 extra certificates from /etc/ssl/certs/ca-certificates.crt. [1142 ms] Start: Run: docker buildx build --load --build-arg BUILDKIT_INLINE_CACHE=1 -f /tmp/devcontainercli-myuser/container-features/0.69.0-1726049802453/Dockerfile-with-features -t vsc-0.384.0-d02bf4b192210f9bf60e380fd0f36a4ecccc94d45fc6aafc3f10204dd5ad921f --target dev_containers_target_stage --build-arg _DEV_CONTAINERS_BASE_IMAGE=dev_container_auto_added_stage_label /tmp/vsch-myuser/inspect-volume/0.384.0 [+] Building 0.0s (0/0) docker:default ERROR: unable to prepare context: path "/tmp/vsch-myuser/inspect-volume/0.384.0" not found [1361 ms] Error: Command failed: docker buildx build --load --build-arg BUILDKIT_INLINE_CACHE=1 -f /tmp/devcontainercli-myuser/container-features/0.69.0-1726049802453/Dockerfile-with-features -t vsc-0.384.0-d02bf4b192210f9bf60e380fd0f36a4ecccc94d45fc6aafc3f10204dd5ad921f --target dev_containers_target_stage --build-arg _DEV_CONTAINERS_BASE_IMAGE=dev_container_auto_added_stage_label /tmp/vsch-myuser/inspect-volume/0.384.0 [1362 ms] at FtA (/home/myuser/.vscode/extensions/ms-vscode-remote.remote-containers-0.384.0/dist/spec-node/devContainersSpecCLI.js:466:1933) [1362 ms] at async Pm (/home/myuser/.vscode/extensions/ms-vscode-remote.remote-containers-0.384.0/dist/spec-node/devContainersSpecCLI.js:465:1896) [1362 ms] at async NH (/home/myuser/.vscode/extensions/ms-vscode-remote.remote-containers-0.384.0/dist/spec-node/devContainersSpecCLI.js:465:610) [1363 ms] at async YtA (/home/myuser/.vscode/extensions/ms-vscode-remote.remote-containers-0.384.0/dist/spec-node/devContainersSpecCLI.js:482:3771) [1363 ms] at async eB (/home/myuser/.vscode/extensions/ms-vscode-remote.remote-containers-0.384.0/dist/spec-node/devContainersSpecCLI.js:482:4886) [1363 ms] at async prA (/home/myuser/.vscode/extensions/ms-vscode-remote.remote-containers-0.384.0/dist/spec-node/devContainersSpecCLI.js:663:200) [1363 ms] at async drA (/home/myuser/.vscode/extensions/ms-vscode-remote.remote-containers-0.384.0/dist/spec-node/devContainersSpecCLI.js:662:14706) [1373 ms] Exit code 1 [1386 ms] Command failed: /usr/share/code/code /home/myuser/.vscode/extensions/ms-vscode-remote.remote-containers-0.384.0/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /home/myuser/.config/Code/User/globalStorage/ms-vscode-remote.remote-containers/data --container-session-data-folder /tmp/devcontainers-0ff0f5b5-71a2-4dcf-b0bf-403862739e9e1726049800766 --workspace-folder /tmp/vsch-myuser/inspect-volume/0.384.0 --workspace-mount-consistency cached --id-label vsch.local.volume=vscode-remote-try-node-d773fe6db837e4b027e5be39a8a66cbe8f69ed4273833eb196b87fd108a6439a --id-label devcontainer.config_file=/tmp/vsch-myuser/inspect-volume/0.384.0/.devcontainer.json --log-level debug --log-format json --config /tmp/vsch-myuser/inspect-volume/0.384.0/.devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode-remote-try-node-d773fe6db837e4b027e5be39a8a66cbe8f69ed4273833eb196b87fd108a6439a,target=/workspaces,external=true --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default never --mount-workspace-git-root --include-configuration --include-merged-configuration [1386 ms] Exit code
已确认路径/tmp/vsch-myuser/inspect-volume/0.384.0实际存在,请问问题出在哪里?
解决方案
- 切换工作区到非临时目录:VS Code Dev Containers会把仓库临时克隆到/tmp目录,部分系统的tmpfs或自动清理机制可能干扰Docker访问。手动克隆示例仓库到本地用户目录(比如
~/dev/vscode-remote-try-node),再用VS Code打开该目录后重新启动开发容器。 - 检查Docker对/tmp目录的访问权限:Ubuntu的AppArmor规则可能限制Docker访问/tmp下的特定子目录。可以尝试临时关闭AppArmor测试(
sudo systemctl stop apparmor),如果解决问题,需要添加AppArmor规则允许Docker访问该路径,或者将工作区移到其他目录。 - 验证用户Docker权限:确保当前用户在docker用户组中(
groups | grep docker),如果不在,执行sudo usermod -aG docker $USER,重新登录后再尝试。 - 更新相关组件版本:Dev Containers扩展、VS Code和Docker的版本兼容问题可能导致该错误。更新VS Code到最新版,升级Dev Containers扩展,同时更新Docker到最新稳定版后重试。
- 手动指定构建上下文:如果上述方法无效,可以尝试手动修改.devcontainer配置,指定明确的构建上下文路径,避免使用临时目录。
内容的提问来源于stack exchange,提问作者garrik
相关产品推荐
相关产品推荐

