标签: wsl-2

Ubuntu 错误“在此 WSL 2 发行版中找不到命令‘docker’。”

我在 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 的集成,如下所示:

Docker 桌面设置屏幕截图

但是我收到的错误仍然是相同的。有谁知道如何解决这一问题?

注意:我可以在 PowerShell 和命令提示符中运行 Docker 命令(例如docker --version),但在 Ubuntu 中无法识别。

ubuntu docker docker-compose windows-subsystem-for-linux wsl-2

12
推荐指数
3
解决办法
1万
查看次数

golang mkdir /usr/local/go/pkg/mod 权限被拒绝

操作系统: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 怀念的东西吗?

linux go windows-subsystem-for-linux goland wsl-2

12
推荐指数
1
解决办法
8765
查看次数

断点无法通过 Windows 10 和 WSL2 上的 Visual Studio Code 在 Chrome 中调试 React 应用程序

在今年的 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)

debugging google-chrome reactjs visual-studio-code wsl-2

11
推荐指数
2
解决办法
1万
查看次数

是否可以在Windows 20H2(WSL2.0)中将“WSL”虚拟交换机设置为外部以及如何配置它?

将 WSL 端口绑定到 localhost 对我来说还不够,因为我需要在 WSL 中运行应用程序,这些应用程序必须在我的本地网络中运行。尝试在 Hyper-V 管理器中将 WSL 虚拟交换机切换到外部会导致拒绝访问错误(当 wsl 实例运行时),从而导致主机和/或 WSL 网络出现以下大问题,直到我重新启动主机为止。当 WSL 发行版未运行时,WSL 虚拟交换机在 Hyper-V 管理器(虚拟交换机管理器)中不可见。

我有两个问题,如果有人能帮助我,我将非常感激:

  1. 这是正常行为吗 - 网络尝试直接配置 WSL 虚拟交换机时遇到问题?我记得 Hyper-V 虚拟机没有出现此类问题 - 也许只是短暂的连接丢失,而不是更多。
  2. 有没有办法以这种方式配置 WSL,以便每次运行它时都以 WSL 外部交换机启动?文件 .wslconfig 和 /etc/wsl.conf 看起来对此毫无用处 - 我还没有设法在谷歌中找到解决方案。

networking wsl-2

11
推荐指数
3
解决办法
2万
查看次数

如何为 wsl2 上的不同发行版提供不同的 ip?

Ubuntu在 wsl2 上运行 5 个不同的发行版,但它们都具有相同的 ip 地址。例如Ubuntu 18.04,并且Ubuntu 20.04具有相同的 ip。每个版本可以有不同的ip吗Ubuntu

windows-subsystem-for-linux wsl-2

11
推荐指数
1
解决办法
4726
查看次数

WSL 2,React 不重新加载文件更改?

我最近安装了 WSL 2,但是当我使用 create-react-app 创建应用程序并使用 npm start 时,当我编辑某些文件时,该应用程序不会重新加载。我错过了什么吗?

wsl-2

11
推荐指数
2
解决办法
7108
查看次数

Docker with create React app 不会更新更改

我正在 WSL2 和 create-react-app 中使用 docker 创建一个 React 应用程序,一切似乎都工作正常,只是应用程序没有随着代码的更改而更新。我的意思是,当我对代码进行更改时,浏览器应该自动更新更改,但事实并非如此,我必须重新启动容器才能看到它们。我添加CHOKIDAR_USEPOLLING=trueENV但它也不起作用。这些是配置文件:

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 …

node.js docker reactjs docker-compose wsl-2

11
推荐指数
1
解决办法
1万
查看次数

VSCode | 由于意外错误,编辑器无法打开

目标:在终端中常规使用 Bash 和 Git 来处理 Visual Studio Code 中的 Python 项目。

\n

每当我启动时,我都会看到此错误。我无法打开代码或使用终端。

\n

Visual Studio 代码屏幕

\n

错误信息:

\n
The 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
\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

11
推荐指数
5
解决办法
3万
查看次数

使用 --gpus 标签运行 docker 桌面容器挂起,在 wsl 中没有任何响应

我曾经使用带有 wsl2 集成的 docker 桌面,并且在 GPU 支持下运行容器没有问题。

但是,在最近更新 docker Desktop v4.17.1(2023 年 3 月)后,我专门使用 wsl 上的 --gpus all 标记运行的任何容器都会永远挂起,没有任何响应。除非使用 --gpus 标签指定,否则相同的容器运行不会出现任何问题。

在 wsl 上使用 nvidia-smi 运行 cuda 容器挂起,没有任何响应

注意:nvidia-smi 在 wsl 中工作正常。系统:Windows 11。

  1. 尝试全新安装 docker 桌面。
  2. 尝试了所有 wsl 发行版的全新安装。
  3. WSL 发行版可以访问 GPU 和 nvidia cuda 驱动程序。
  4. 能够在 wsl 中使用 docker 桌面,没有任何问题,除非使用 --gpus 标签运行任何容器挂起,没有任何错误或响应。

containers docker nvidia-docker wsl-2

11
推荐指数
1
解决办法
2557
查看次数

如何使用 powershell 在 wsl 上运行 bash 脚本?

在 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 文件系统上的脚本文件。

bash powershell windows-subsystem-for-linux wsl-2

10
推荐指数
1
解决办法
2万
查看次数