win10 wsl1 转换为 wsl2 的方法及实际使用案例

本贴最后更新于 1923 天前,其中的信息可能已经斗转星移

win10 wsl1 转换为 wsl2 的方法及实际使用案例

0.WSL2(win10 子系统二代)特殊优势:

  • 彻底重构 wls 一代,速度比上一代快 20%

  • 支持原生 Docker 安装,启动(相当于完整的 linux 系统、虚拟机运行)

  • 支持各种一键脚本,比如宝塔一键脚本、佰阅一键脚本等等

  • win10 文件管理器可访问 linux 系统文件

  • 搭配 vs code 的插件 vs remote 可以超低延迟、急速开发基于 linux 系统的开发环境

  • 其它优势。。。。

对于 Docker,win10 桌面版docker 启动耗时大概一分钟左右,在 wls2 上,启动 docker 真的是一瞬间就完成。

1.WLS2 win10 子系统安装方法(速度很快,一分钟不到)

若要安装并开始使用 WSL 2,请完成以下步骤:

  1. 启用“虚拟机平台”可选组件

  2. 使用命令行设置要由 WSL 2 支持的发行版

  3. 验证发行版使用的 WSL 版本

请注意,需要运行 Windows 10 版本 18917 或更高版本才能使用 WSL 2,并且需要已安装 WSL(可在此处找到有关执行此操作的说明)。

关于系统环境,可以到设置,更新与安装,windows 预览体验计划,寻找快速版即可。等第一次更新系统后,可以切换到慢速版。否则快速版更新速度太频繁,影响正常工作。

1.1 启用“虚拟机平台”可选组件

  1. 管理员身份 打开 PowerShell 并运行:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
  1. 需要 重新启动计算机,这些更改才能更好地生效

  2. 查看现有地 WSL

wsl -l -v

### 输出结果
PS C:\WINDOWS\system32> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         1
  1. 使用命令行将 WSL 1 的发行版转化为 WSL2、在 PowerShell 中运行:
wsl --set-version $已经使用的WSL的名字 2

### 输出结果
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
转换完成。
  1. 此外,如果要使 WSL 2 成为你的默认体系结构,可以通过此命令执行该操作:
wsl --set-default-version 2

## 输出结果
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
  1. 进行转换后的检测
 wsl -l -v

## 输出结果
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         2

2. 实例之:Docker 安装

2.1 更新软件

sudo apt-get update
sudo apt-get upgrade -y
sudo apt autoremove

2.2 安装 docker 前准备

2.2.1 卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

2.2.2 安装依赖使 apt 能够使用基于 https 的仓库

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common -y

2.2.3 添加 docker 的离线 gpg key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

2.2.4 验证 key 的信息

 sudo apt-key fingerprint 0EBFCD88
    
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

2.2.5 设置 docker 各版本的安装源(此处是 stable 版本)

To add the nightly or test repository, add the word nightly or test (or both) after the word stable in the commands below.

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

2.3 开始安装 docker

2.3.1 更新软件目录

sudo apt-get update

2.3.2 安装最新版本的 docker

sudo apt-get install docker-ce docker-ce-cli containerd.io -y

2.3.3 启动测试

# 启动 docker 守护进程
sudo service docker start
# 运行测试
sudo docker run hello-world

2.4 免 sudo 使用 docker 命令

原文章:https://expoli.tech/articles/2019/07/27/1564656218673.html

2.4.1 背景

相信大家在一台新机器上面安装 docker 时候、都会发现 docker 在安装完成之后、如果你想直接使用使用 docker 命令来运行 docker 相关的操作、会爆出类似于下面的错误。

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied

报错显示权限不够、那么如何解决这个问题呢?

官方文档给出了解决方案,那就是将你添加到 docker 这个用户组里面即可。

  • 如果还没有 docker group 就添加一个:
sudo groupadd docker
  • 将相应的用户加入该 group 内。然后退出并重新登录就生效啦。
sudo gpasswd -a ${USER} docker
  • 重启 docker 服务
sudo service docker restart
  • 切换当前会话到新 group 或者重启 X 会话
newgrp - docker

现在配置就完成了、可以免 sudo 使用,docker 命令了。

  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    223 引用 • 474 回帖
  • WSL

    Windows Subsystem for Linux(WSL),适用于 Linux 的 Windows 子系统 。它是一个为在 Windows 上能够原生运行 Linux 二进制可执行文件的兼容层。WSL 允许开发人员直接在 Windows 上运行 GNU / Linux 环境(包括大多数命令行工具,实用程序和应用程序),不需要修改程序,无需虚拟机的开销。

    9 引用 • 9 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    492 引用 • 926 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • remixjc
    # 启动 docker 守护进程
    sudo service docker start
    

    启动这里提示*Starting Docker :docker [ok]

    run 的时候提示如下

    Cannot connect to the Docker daemon at . Is the docker daemon running?