文章目录
概要WSL介绍WSL安装安装环境安装方式一:命令行安装(不推荐,可能出现奇怪的问题)安装方式二:通过控制面板安装 WSL 安装Ubuntu22.04(通过Microsoft Store)Ubuntu更换镜像源进入Ubuntu更换镜像源 Ubuntu安装DockerWSL映射端口到宿主机场景解决方法步骤1:配置端口映射步骤2:关闭windows防火墙或将端口对外开放验证 问题处理使用WSL发现其无法ping通宿主机,也无法连接外网WSL迁移到其他磁盘问题描述解决办法
概要
本文主要记录Windows WSL的安装和使用过程,内容包括WSL安装过程、WSL安装Ubuntu、Ubuntu更换镜像源,Ubuntu安装Dcoker并配置等步骤。
WSL介绍
Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。 [1-3]
如果使用Windows 10 2004以上,可以通过WSL 2来窗口化运行桌面应用,也不需要另外安装其他的X 服务器。
参考链接
WSL安装
安装环境
操作系统: Microsoft Windows 11 家庭中文版
版本号: 10.0.22621
虚拟化: 已开启
安装方式一:命令行安装(不推荐,可能出现奇怪的问题)
在cmd中输入: wsl --install
安装方式二:通过控制面板安装
windows
+S
,搜索控制面板,打开控制面板:控制面板->程序->启用或关闭Windows功能->适用于Linux的Windows子系统
,进行勾选后,重启主机,WSL就安装好了。
WSL 安装Ubuntu22.04(通过Microsoft Store)
打开Microsoft Store
搜索WSL
,即可看到支持的操作系统,选择Ubuntu 22.04
安装即可
Ubuntu更换镜像源
进入Ubuntu
打开win11最新的终端,选择Ubuntu 22.04,即可进入Ubuntu子系统。
更换镜像源
# 切换至root用户后,执行下述指令# 备份旧的镜像源文件$ mv /etc/apt/sources.list /etc/apt/sources.list.bk# 更换为阿里源$ vi /etc/apt/sources.listdeb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse# 更新软件$ apt-get update
Ubuntu安装Docker
# snap安装docker$ snap install docker# 修改docker配置文件# 如果是自行搭建的镜像仓库,使用`insecure-registries`避免出现报错Error response from daemon: Get "https://ip:port/v2/": http: server gave HTTP response to HTTPS client$ vi /var/snap/docker/current/config/daemon.json{ "log-level": "error", "registry-mirrors": [ "https://artifact.srdcloud.cn", "https://hub-mirror.c.163.com" ], "insecure-registries": ["IP:PORT"], "experimental": true}# 修改完配置要先停止docker,再重新启动,否则配置不生效$ snap stop docker$ snap start docker# 查看docker配置$ docker info
WSL映射端口到宿主机
场景
假设此时WSL内部署了个应用,对外访问端口为8080,需要开放给其他用户访问。
解决方法
将WSL内的应用端口映射到宿主机即可。
步骤1:配置端口映射
使用Windows的netsh命令实现端口映射配置,指令如下:
1、打开Windows终端,以管理员身份运行
2、添加端口映射规则
netsh interface portproxy add v4tov4 listenport=18080 listenaddress=0.0.0.0 connectport=8080 connectaddress=XX.XX.XX.XX
listenport
为需要在局域网中监听的端口,即宿主机对外开放的端口
connectport
为WSL内应用的端口
connectaddress
为WSL的IP
listenaddress
为宿主机的地址,设为0.0.0.0
即可。
步骤2:关闭windows防火墙或将端口对外开放
验证
# xxx.xxx.xxx.xxx为宿主机ip# 该接口访问后,如畅通会返回一个true$ curl xxx.xxx.xxx.xxx:18080/api/v1/health;true
问题处理
使用WSL发现其无法ping通宿主机,也无法连接外网
第一次安装的时候,通过Microsoft Store安装WSL,结果Ubuntu无法ping通宿主机,也无法连接外网,网上的办法都试了也不行。解决方法就是通过控制面板卸载WSL后重装
WSL迁移到其他磁盘
问题描述
WSL的子系统默认会安装在C盘,随着使用,C盘会占用越来越多,导致WSL系统异常
解决办法
将WSL子系统迁移到其他磁盘,具体流程如下:
查看WSL状态:wsl -l -v
确保子系统处于Stopped
状态才能进行迁移导出子系统镜像: wsl --export linux_name E:\ubuntu.tar
注销Linux子系统:wsl --unregister linux_name
导入系统:wsl --import <子系统名称> <要迁移的磁盘路径> E:\ubuntu.tar --version 2
修改默认用户: ubuntu22.04.exe config --default-user root