Windows Subsystem for Linux 2
https://docs.microsoft.com/zh-cn/windows/wsl/
资料https://www.sitepoint.com/wsl2/
手动安装步骤
步骤 1 - 启用适用于 Linux 的 Windows 子系统
需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
建议现在转到步骤 #2,更新到 WSL 2,但如果只想安装 WSL 1,现在可以重新启动计算机,然后继续执行步骤 6 - 安装所选的 Linux 发行版。 若要更新到 WSL 2,请等待重新启动计算机,然后继续执行下一步。
步骤 2 - 检查运行 WSL 2 的要求
若要更新到 WSL 2,需要运行 Windows 10。对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。
低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。
若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 更新到“设置”菜单中的最新 Windows 版本。
步骤 3 - 启用虚拟机功能
安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新启动 计算机,以完成 WSL 安装并更新到 WSL 2。
步骤 4 - 下载 Linux 内核更新包
下载最新包:适用于 x64 计算机的 WSL2 Linux 内核更新包备注
如果使用的是 ARM64 计算机,请下载 ARM64 包。 如果不确定自己计算机的类型,请打开命令提示符或 PowerShell,并输入:systeminfo 查看 System Type 或 系统类型
运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)
安装完成后,请继续执行下一步 - 在安装新的 Linux 分发时,将 WSL 2 设置为默认版本。 (如果希望将新的 Linux 安装设置为 WSL 1,请跳过此步骤。)
步骤 5 - 将 WSL 2 设置为默认版本
打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:wsl --set-default-version 2步骤 6 - 安装所选的 Linux 分发
打开 Microsoft Store,并选择你偏好的 Linux 分发版。在分发版的页面中,选择“获取”。
首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。
然后,需要为新的 Linux 分发版创建用户帐户和密码。(小写用户名)
此 用户名 和 密码 特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。
重置 Linux 密码
若要更改密码,请打开 Linux 分发版(例如 Ubuntu)并输入以下命令:passwd系统会要求你输入当前密码,然后要求输入新密码,之后再确认新密码。
忘记密码
如果忘记了 Linux 分发版的密码:请打开 PowerShell,并使用以下命令进入默认 WSL 分发版的根目录:wsl -u root
如果需要在非默认分发版中更新忘记的密码,请使用命令:wsl -d Debian -u root,并将 Debian 替换为目标分发版的名称。
在 PowerShell 内的根级别打开 WSL 发行版后,可使用此命令更新密码:passwd <WSLUsername>,其中 <WSLUsername> 是 DISTRO 中帐户的用户名,而你忘记了它的密码。
系统将提示你输入新的 UNIX 密码,然后确认该密码。 在被告知密码已成功更新后,请使用以下命令在 PowerShell 内关闭 WSL:exit
祝贺你!现已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!
启动
下载后,单击Microsoft Store应用程序上的“启动”按钮,或“开始”菜单中的新Ubuntu图标
Ubuntu中初始文件夹 dangzenglong@DANG-PC:/mnt/c/Users/DANG$
安装 Windows 终端(可选)
https://docs.microsoft.com/zh-cn/windows/terminal/get-started打开 Microsoft Store 下载 Windows Terminal,它可启用多个选项卡(在多个 Linux 命令行、Windows 命令提示符、PowerShell 和 Azure CLI 等之间快速切换)、创建键绑定(用于打开或关闭选项卡、复制粘贴等的快捷方式键)、使用搜索功能,以及使用自定义主题(配色方案、字体样式和大小、背景图像/模糊/透明度)。
https://docs.microsoft.com/zh-cn/windows/terminal/command-line-arguments?tabs=powershell
Windows Terminal 设置,打开文件json文件,它在
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
Windows Terminal(终端)主题
更新和升级包
# apt 是 Linux 发行版推荐的命令 ,apt 是 apt-get 和 apt-cache 命令的子集,为包管理提供必要的命令
# 推荐使用apt而不是apt-get
sudo apt update
sudo apt upgrade -y
# cleanup
sudo apt autoremove -y
如何在适用于 Linux 的 Windows 子系统中重置 Ubuntu(和其他 Linux 发行版)
右键“开始”按钮,选择“应用和功能”,搜索框中输入“Ubuntu”, 在找到的应用中点击“Ubuntu”(或 您的发行版名称)并单击“高级选项”,单击“重置”按钮
完成后,您将在“重置”按钮旁边看到一个复选标记。然后您可以像往常一样启动 Ubuntu。首次启动时,它会要求您设置用户名和密码。手动安装好之后输入小写用户名
重置同样适用于 Windows Terminal
从 Windows 访问 Linux 文件
在文件资源管理器地址栏或运行对话框中输入\\wsl$\,可以在网络路径上访问 Linux 文件。
列出了您安装的 Linux 发行版,因此您可以访问 Ubuntu 根目录\\wsl$\Ubuntu。
您的个人 Linux 文件通常存储在:\\wsl$\Ubuntu\home\<yourname>
例如:\\wsl$\Ubuntu-20.04\home\dangzenglong
映射网络驱动器
您可以通过\\wsl$\在文件资源管理器中打开\\wsl$\Ubuntu\,右键单击 Ubuntu 文件夹,然后选择Map network drive...来挂载网络驱动器。
从 Linux 运行 Windows 应用程序
在 cmd 或 PowerShell 中运行 wsl --shutdown 来重新启动分发。以便于可以在ubuntu中运行任何 Windows 可执行文件都可以从 Linux 启动(通常需要指定.exe扩展名)。
例如,要在文件资源管理器中打开当前 Linux 目录,请输入:
explorer.exe 会打开 此电脑
explorer.exe . 会打开 C:\Users\DANG 文件夹 也可以用powershell.exe /c start .
或.bashrc在记事本中编辑:notepad.exe ~/.bashrc
或者在 VS Code 中打开特定的项目目录:code ~/projects/mywebsite
从 Windows 访问 Linux 网络应用程序 (localhost)
要查找支持 Linux 发行版的虚拟机的 IP 地址:
从您的 WSL 发行版(即 Ubuntu),运行以下命令: ip addr 找到并复制接口inet值下的地址eth0。
如果您安装了 grep 工具,请通过使用以下命令过滤输出来更轻松地找到它: ip addr | grep eth0
使用此 IP 地址或者 localhost 连接到您的 Linux 服务器。
从 Linux 访问 Windows 网络应用程序 (主机 IP)
通过从 Linux 发行版运行以下命令来获取主机的 IP 地址: cat /etc/resolv.conf
复制以下术语的 IP 地址:nameserver。
使用复制的 IP 地址连接到任何 Windows 服务器。
cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'
安装 MongoDB
docker run -it -v mongodata:/data/db -p 27017:27017 --name mongodb --restart unless-stopped -d mongo
http://localhost:27017/
MongoDB 的默认数据目录路径是
\data\db
注意: 在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。
web 管理数据库
docker run -d --name mongo-express -e ME_CONFIG_MONGODB_SERVER=host.docker.internal -p 8081:8081 mongo-express
http://localhost:8081/
dangzenglong@DANG-PC:~$ docker port mongodb
27017/tcp -> 0.0.0.0:27017
27017/tcp -> :::27017
dangzenglong@DANG-PC:~$ docker port mongo-express
8081/tcp -> 0.0.0.0:8081
8081/tcp -> :::8081
如有以下报错:
docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:8081: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
首先,检查您所需的端口是否已保留
PS C:\Users\DANG> netsh interface ipv4 show excludedportrange protocol=tcp
如果您的端口在其中一个范围内,请停止 winnat:
PS C:\Users\DANG> net stop winnat
禁止对您所需的端口进行动态保留(例如,原始问题中所述的 50051):
PS C:\Users\DANG> netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1
Start your docker services
重启winnat:
PS C:\Users\DANG> net start winnat
PS C:\Users\DANG> netstat -a -n -p tcp | findstr LISTENING
在 WSL 2 上开始使用 Docker 远程容器
sudo chmod 666 /var/run/docker.sock
运行以下docker命令以在容器中启动支持 PHP 7.4 的 Apache Web 服务器,该服务器将主机目录/var/www/html中的文件挂载到容器中:
docker run -it --rm -p 18080:80 --name php -v "$PWD":/var/www/html php:7.4-apache
>wsl -l -v
docker-desktop
替换了之前使用的 Hyper-V VM 实现 Docker Desktop。这处理容器的引导和管理。docker-desktop-data
是存储您的图像和配置的地方;这实质上是对 Hyper-V 以前使用的虚拟硬盘的直接替换。
评论
发表评论