文章目录
概要
本文主要记录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.list
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-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