WSL2.0 安装、自定义目录、docker、开机+docker自启、报错教程

WSL2.0 安装到自定义目录

安装WSL2.0

官网安装教学链接https://docs.microsoft.com/zh-cn/windows/wsl/install

安装Ubuntu默认版

默认安装Ubuntu

wsl --install

安装指定版本

  1. 查看所有可以使用的版本
wsl --list --online 
  1. 安装指定版本
wsl --install -d <Distribution Name>

微软商店安装

商店搜索Ubuntu 安装自己喜欢的即可

迁移到指定目录

下载迁移工具

开源地址:https://github.com/DDoSolitary/LxRunOffline

开始迁移

  1. 打开LxRunOffline安装目录的Cmd
  2. 查看系统中安装了那些wsl

第一种方法使用工具命令查看

LxRunOffline.exe list

第二种方法使用WSL命令行查看

wsl -l -v
  1. 使用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内操作

  1. 命令行输入
sudo vim /etc/init.wsl
  1. 按‘I’或‘A’进入编辑模式,输入以下内容
#! /bin/sh
service docker start

注:这里可放入其它Linux命令

  1. 按‘Esc’退出编辑模式,输入以下命令保存并退出
:wq!
  1. 赋予文件可执行权限
sudo chmod +x /etc/init.wsl

Windows内操作

  1. 创建txt文件,并输入以下内容
Set ws = WScript.CreateObject("WScript.Shell")        
ws.run "wsl -d ubuntu -u root /etc/init.wsl"

注:其中‘ubuntu’为WSL2子系统的名字

  1. 保存并重命名,这里为‘linux-start.vbs’,保证格式为.vbs即可
  2. win+R 输入 shell:startup 将以上vbs文件放入该目录

原文链接

从 Linux(主机 IP)访问 Windows 网络应用

如果要从 Linux 分发版(即 Ubuntu)访问 Windows 上运行的网络应用(例如,在 NodeJS 或 SQL 服务器上运行的应用),则需要使用主机的 IP 地址。 虽然这不是一种常见方案,但你可以执行以下步骤来使其可行。

  1. 通过在 Linux 分发版中运行以下命令来获取主机的 IP 地址:cat /etc/resolv.conf
  2. 复制以下词语后面的 IP 地址:nameserver
  3. 使用复制的 IP 地址连接到任何 Windows 服务器。

下图显示了一个示例,该示例说明如何通过 curl 连接到在 Windows 中运行的 Node.js 服务器。

Connect to NodeJS server in Windows via Curl

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常用命令

  1. 列出分发版本
wsl -l -v
  1. 关闭指定版本
wsl -t Ubuntu
  1. 启动指定版本
wsl -d Ubuntu
posted @ 2022-05-02 01:51  AJun816  阅读(1885)  评论(0编辑  收藏  举报