WSL2.0 安装、自定义目录、docker、开机+docker自启、报错教程
WSL2.0 安装到自定义目录
安装WSL2.0
官网安装教学链接https://docs.microsoft.com/zh-cn/windows/wsl/install
安装Ubuntu默认版
默认安装Ubuntu
wsl --install
安装指定版本
- 查看所有可以使用的版本
wsl --list --online
- 安装指定版本
wsl --install -d <Distribution Name>
微软商店安装
商店搜索Ubuntu 安装自己喜欢的即可
迁移到指定目录
下载迁移工具
开源地址:https://github.com/DDoSolitary/LxRunOffline
开始迁移
- 打开LxRunOffline安装目录的Cmd
- 查看系统中安装了那些wsl
第一种方法使用工具命令查看
LxRunOffline.exe list
第二种方法使用WSL命令行查看
wsl -l -v
- 使用LxRunoffline的命令进行迁移
-n 参数:需要迁移那个版本 ,这里迁移的是Ubuntu版本
-d 参数:需要迁移到那个目录 ,迁移到D:\LocalEnvironment\WSL2\Ubuntu\
.\LxRunOffline.exe move -n Ubuntu -d D:\LocalEnvironment\WSL2\Ubuntu\
迁移报错解决方案
关于迁移报错这篇文章写的非常详细,推荐食用。
参考网址:https://www.pudn.com/news/6242d03bd62d7b1199bc5d32.html
Ubuntu安装Docker
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
Ubuntu修改DNS
直接执行docker安装、sudo apt-get update 会报错,原因是DNS解析没有配置好。解决方法如下:
sudo vi /etc/resolv.conf
添加DNS
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
#这里用的是阿里云的DNS服务器
nameserver 223.5.5.5
nameserver 223.6.6.6
之后执行sudo apt-get update就正常了。
Docker 开机自启
Docker服务设置自动启动
说明:适用于yum安装的各种服务
查看已启动的服务
systemctl list-units --type=service
查看是否设置开机启动
systemctl list-unit-files | grep enable
设置开机启动
systemctl enable docker.service
关闭开机启动
systemctl disable docker.service
Docker容器设置自动启动
启动时加--restart=always
docker run -tid --name isaler_v0.0.11 -p 8081:8080 --restart=always -v /alidata/iDocker/run/projectImages/isaler/v0.0.11/log:/usr/local/tomcat/logs isaler_v0.0.11
Flag Description
no 不自动重启容器. (默认value)
on-failure 容器发生error而退出(容器退出状态不为0)重启容器
unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
如果已经过运行的项目
如果已经启动的项目,则使用update更新:
docker update --restart=always isaler_v0.0.11
WSL2+Docker 开机自启
WSL2内操作
- 命令行输入
sudo vim /etc/init.wsl
- 按‘I’或‘A’进入编辑模式,输入以下内容
#! /bin/sh
service docker start
注:这里可放入其它Linux命令
- 按‘Esc’退出编辑模式,输入以下命令保存并退出
:wq!
- 赋予文件可执行权限
sudo chmod +x /etc/init.wsl
Windows内操作
- 创建txt文件,并输入以下内容
Set ws = WScript.CreateObject("WScript.Shell")
ws.run "wsl -d ubuntu -u root /etc/init.wsl"
注:其中‘ubuntu’为WSL2子系统的名字
- 保存并重命名,这里为‘linux-start.vbs’,保证格式为.vbs即可
- 按
win+R
输入shell:startup
将以上vbs文件放入该目录
从 Linux(主机 IP)访问 Windows 网络应用
如果要从 Linux 分发版(即 Ubuntu)访问 Windows 上运行的网络应用(例如,在 NodeJS 或 SQL 服务器上运行的应用),则需要使用主机的 IP 地址。 虽然这不是一种常见方案,但你可以执行以下步骤来使其可行。
- 通过在 Linux 分发版中运行以下命令来获取主机的 IP 地址:
cat /etc/resolv.conf
- 复制以下词语后面的 IP 地址:
nameserver
。 - 使用复制的 IP 地址连接到任何 Windows 服务器。
下图显示了一个示例,该示例说明如何通过 curl 连接到在 Windows 中运行的 Node.js 服务器。
APT报错解决方法
今天安装任何软件都是报这个错误,跟着网上的教程各种尝试都没有解决,最后是通过修改DNS完成的,这里记录下:
E: Failed to fetch http://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/glew/libglew-dev_1.13.02_amd64.deb Temporary failure resolving ‘mirrors.tuna.tsinghua.edu.cn’
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
解决方案:
进入配置文件,修改DNS。
sudo vi /etc/resolv.conf
这里使用阿里的
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.27.32.1
nameserver 223.5.5.5
nameserver 223.6.6.6
其他的解决方案删除文件之类的,百度一大堆就不赘述了,哪些方法试了都没解决。
注:更改清华源需要注意匹配自己的系统版本。
WSL常用命令
- 列出分发版本
wsl -l -v
- 关闭指定版本
wsl -t Ubuntu
- 启动指定版本
wsl -d Ubuntu