我在 Ubuntu 上运行 WSL 2,在计算机上启动和运行 docker 时遇到一些问题。我安装了 Docker Desktop 并在后台运行,并且还启用了与 Ubuntu 的 WSL 集成。
当我尝试运行简单的 docker 命令(例如 )时docker --version
,我收到此错误:
在此 WSL 2 发行版中找不到命令“docker”。我们建议在 Docker Desktop 设置中激活 WSL 集成。
有关将 Docker Desktop 与 WSL 2 结合使用的详细信息,请访问:
https://docs.docker.com/go/wsl2/
我已经访问了该链接并按照它提供的所有说明进行操作,启用了 WSL 与 Ubuntu 的集成,如下所示:
但是我收到的错误仍然是相同的。有谁知道如何解决这一问题?
注意:我可以在 PowerShell 和命令提示符中运行 Docker 命令(例如docker --version
),但在 Ubuntu 中无法识别。
ubuntu docker docker-compose windows-subsystem-for-linux wsl-2
操作系统:Windows 11 WSL2;IDE:Goland 最新
我正在尝试打开 IDE Goland,但当 IDE 尝试为我的项目建立索引时出现此错误。
warning: GOPATH set to GOROOT (/usr/local/go) has no effect
go: mkdir /usr/local/go/pkg/mod: permission denied
go: github.com/MyCompany/common-backend@v1.0.56: mkdir /usr/local/go/pkg/mod: permission denied
Run Code Online (Sandbox Code Playgroud)
不过,我已经这样安排了
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin
Run Code Online (Sandbox Code Playgroud)
这是我对 WSL for Go Path 怀念的东西吗?
在今年的 MSBuild 会议和终端 1.x、winget 和其他附加功能的发布之后,我想在需要购买新笔记本电脑(Surface Book 3 或 MacBook Pro... )。
问题
使用 WSL2 和 Visual Studio Code 在 Windows 10 上的 Chrome 中调试 Web 应用程序时,断点不起作用。运行调试会话时,会显示消息断点设置但尚未绑定。
在 MacOS 上调试时,完全相同的应用程序可以完美运行。
我的设置
MacBook Pro 运行最新版本的 MacOS,并在 BootCamp 下安装了 Windows 10 Pro。
Windows 10 有运行 Ubuntu 20.04 的 WSL2。终端 1.x 已安装并用于访问 Linux 命令行。
Visual Studio Code 是最新的 1.45.1 稳定版本,包括 Windows 10 上的 WSL 远程开发扩展 (0.44.2)。VSCode 通过code .
在项目目录中运行从 WSL2 中启动。
Chrome 扩展的调试器是 4.12.8
应用程序
该应用程序是一个默认的 Create React App,仅对分配断点进行了很小的更改。
我首先运行:
npx …
Run Code Online (Sandbox Code Playgroud) 将 WSL 端口绑定到 localhost 对我来说还不够,因为我需要在 WSL 中运行应用程序,这些应用程序必须在我的本地网络中运行。尝试在 Hyper-V 管理器中将 WSL 虚拟交换机切换到外部会导致拒绝访问错误(当 wsl 实例运行时),从而导致主机和/或 WSL 网络出现以下大问题,直到我重新启动主机为止。当 WSL 发行版未运行时,WSL 虚拟交换机在 Hyper-V 管理器(虚拟交换机管理器)中不可见。
我有两个问题,如果有人能帮助我,我将非常感激:
我Ubuntu
在 wsl2 上运行 5 个不同的发行版,但它们都具有相同的 ip 地址。例如Ubuntu 18.04
,并且Ubuntu 20.04
具有相同的 ip。每个版本可以有不同的ip吗Ubuntu
?
我最近安装了 WSL 2,但是当我使用 create-react-app 创建应用程序并使用 npm start 时,当我编辑某些文件时,该应用程序不会重新加载。我错过了什么吗?
我正在 WSL2 和 create-react-app 中使用 docker 创建一个 React 应用程序,一切似乎都工作正常,只是应用程序没有随着代码的更改而更新。我的意思是,当我对代码进行更改时,浏览器应该自动更新更改,但事实并非如此,我必须重新启动容器才能看到它们。我添加CHOKIDAR_USEPOLLING=true
了ENV
但它也不起作用。这些是配置文件:
docker文件
# pull official base image
FROM node:16.13.1
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install
# add app
COPY . ./
# start app
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
services:
react:
build: ./frontend
command: npm start
ports:
- 3000:3000
volumes:
- ./frontend:/app
env_file:
- 'env.react'
Run Code Online (Sandbox Code Playgroud)
环境反应
CHOKIDAR_USEPOLLING=true
Run Code Online (Sandbox Code Playgroud)
包.json …
目标:在终端中常规使用 Bash 和 Git 来处理 Visual Studio Code 中的 Python 项目。
\n每当我启动时,我都会看到此错误。我无法打开代码或使用终端。
\n\n错误信息:
\nThe editor cannot be opened due to an unexpected error: No file system provider found for resource \'vscode-remote://wsl%2Bubuntu/...\'\n
Run Code Online (Sandbox Code Playgroud)\n更新:卸载 WSL。我不再有下面的旧终端输出。
\n终端:
\n[2022-06-13 15:53:18.277] Resolving wsl+ubuntu, resolveAttempt: 1\n[2022-06-13 15:53:18.361] Starting VS Code Server inside WSL (wsl1)\n[2022-06-13 15:53:18.361] Extension version: 0.66.3\n[2022-06-13 15:53:18.361] Windows build: 19044. Multi distro support: available. WSL path support: enabled\n[2022-06-13 15:53:18.361] No shell environment set or found …
Run Code Online (Sandbox Code Playgroud) windows-10 visual-studio-code windows-subsystem-for-linux wsl-2
我曾经使用带有 wsl2 集成的 docker 桌面,并且在 GPU 支持下运行容器没有问题。
但是,在最近更新 docker Desktop v4.17.1(2023 年 3 月)后,我专门使用 wsl 上的 --gpus all 标记运行的任何容器都会永远挂起,没有任何响应。除非使用 --gpus 标签指定,否则相同的容器运行不会出现任何问题。
在 wsl 上使用 nvidia-smi 运行 cuda 容器挂起,没有任何响应
注意:nvidia-smi 在 wsl 中工作正常。系统:Windows 11。
在 Windows 上的当前目录中,我有以下脚本文件 simple_script.sh:
#!/bin/bash
echo "hi from simple script"
Run Code Online (Sandbox Code Playgroud)
我希望通过 powershell 命令行在 wsl 上运行此脚本。
使用该wsl
命令,我找不到告诉 wsl 调用脚本代码的方法。
以下命令有效(我认为)
wsl bash -c "echo hi from simple script"
Run Code Online (Sandbox Code Playgroud)
但是,当尝试将脚本内容加载到变量中并运行时,它无法按预期工作:
$simple_script = Get-Content ./simple_script.sh
wsl bash -c $simple_script
Run Code Online (Sandbox Code Playgroud)
失败:
bash: -c: option requires an argument
Run Code Online (Sandbox Code Playgroud)
我尝试了几种变体。Get-Content
与标志一起使用-Raw
似乎会打印字符串中的第一个单词(但不是整个字符串)。不包含“”字符的命令有时似乎有效。但我还没有找到一致的方法。
类似的问题似乎不能直接与 wsl 一起工作,并且似乎不能运行驻留在 Windows 文件系统上的脚本文件。
wsl-2 ×10
windows-subsystem-for-linux ×5
docker ×3
reactjs ×2
bash ×1
containers ×1
debugging ×1
go ×1
goland ×1
linux ×1
networking ×1
node.js ×1
powershell ×1
ubuntu ×1
windows-10 ×1