ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

wsl2 (Windows Subsystem for Linux)使用学习

2021-07-07 14:05:16  阅读:440  来源: 互联网

标签:Subsystem sudo Windows Linux wsl linux -- ubuntu docker


wsl2 还不稳定,存在许多bug, 可以在:https://github.com/microsoft/WSL 进行提交

安装

win10 更新之 Windows 10 build 18917 Insider 版本,就可以使用 wsl2。

  • 安装方式一,以管理员身份运行powershell,执行命令,然后重启电脑

    Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
    
  • 方式二

控制面板— 程序和功能— 启用或关闭 windows功能— 适用于Linux的Windows子系统— 打 √

— 重启电脑

wsl 命令

  • 查看帮助

    wsl -h
    
  • 设置默认版本,选择linux默认运行在 wsl1 还是 wsl2

    wsl --set-default-version 2
    
  • 设置 某个linux发行版运行版本,需要先安装好 linux 后才可以转换

    wsl --set-version <distro> 2
    

    示例:

    wsl --set-version ubuntu 1
    
  • ubuntu 版本转换

    wsl --set-version ubuntu 2
    
  • 查看安装的 linux

    wsl --list --verbose
    

  wsl -l -v
  • 停止所用运行Linux

    wsl --shutdown
    
  • 启动虚拟机

    • 直接输入 系统名称:如 Ubuntu 、kali等 直接进入
    • 或使用 wsl命令,例如:

      wsl -d ubuntu
      

安装linux

  • 打开 应用商店,搜索 wsl ,商店提供 ,ubuntu,SUSE Linux Enterprise Server 12,Debian,Kail Linux
  • 点击安装

安装 ubuntu

  • 在应用商店,搜索 Ubuntu ,进行安装

  • 设置用户名密码

  • 设置 root密码

    sudo passwd root
    
  • 安装docker,和正常ubuntu安装docker一样

方式一:

  sudo apt-get update
  sudo apt-get install -y \
      apt-transport-https \
      ca-certificates \
      curl \
      gnupg-agent \
      software-properties-common
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  sudo add-apt-repository \
     "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
     $(lsb_release -cs) \
     stable"
  sudo apt-get update
  sudo apt-get install docker-ce docker-ce-cli containerd.io
  • 启动docker

    sudo service docker start
    
  • 运行容器测试

    sudo docker run hello-world
    
  • docker 以普通用户执行

    sudo usermod -aG docker your-user
    sudo service docker restart
    
  • windows 网络访问 linux

    • 运行 nginx容器

      docker run --name nginx -d -p 8888:80 nginx
      
    • linux内部访问

      curl http://127.0.0.1:8888
      
    • windows访问

    • 查看 linuxIp

      ip addr
      

    查看 eth0 ip,这里是 192.168.161.203 每个机器的都不一样

    • 访问:打开浏览器,访问 http://192.168.161.203:8888 得到nginx页面

    • 访问 http://127.0.0.1:8888 得不到结果,拒绝访问

  • ubuntu 重启系统

    • 在Linux 执行 重启或关机命令,会报错

      ziyun@DESKTOP-JVE2TQQ:/mnt/c/WINDOWS/system32$ sudo reboot
      System has not been booted with systemd as init system (PID 1). Can't operate.
      Failed to talk to init daemon.
      ziyun@DESKTOP-JVE2TQQ:/mnt/c/WINDOWS/system32$ sudo shutdown
      System has not been booted with systemd as init system (PID 1). Can't operate.
      ziyun@DESKTOP-JVE2TQQ:/mnt/c/WINDOWS/system32$
      
    • 需要执行 wsl命令

    • 终止所有运行的linux

      wsl --shutdown
      
    • 终止指定的linux

      wsl --terminate <distro>
      # 或 
      wsl -t <distro>
      

    示例:

    • 查看 linux列表

      wsl -l  
      
    • 关闭 ubutnu ,关闭没有任何显示

      wsl -t Ubuntu
      
  • 启动 ubuntu

    • 或执行 wsl -d ubuntu
    • 或者输入 ubuntu
  • 将ubuntu导出

    • 导出类似,docker的导出,方便移动等

    • 导出到d盘:

      wsl --export Ubuntu D:/ubuntu.tar
      

    很快就会完成,本次实例 tar大小 1.15G,进行压缩 ,大小为 414M

    • 导入

      wsl --import Ubuntu D:/ubuntu_dir  D:/ubuntu.tar
      
    • –import :导入

    • ubuntu: 导入名称,可自定义

    • D:/ubuntu_dir : 导入到那个目录,导入成功,有 ext4.vhdx 文件

    • D:/ubuntu.tar: 源文件

报错

参考的对象类型不支持尝试的操作

参考:https://answers.microsoft.com/zh-hans/insider/forum/all/wsl2%E5%AE%89%E8%A3%85kali/b6dd4c62-1130-4a7c-9462-1e9e5f38dab2 执行命令:

netsh winsock reset

docker for wsl2

参考:https://docs.docker.com/docker-for-windows/wsl-tech-preview/

docker windows 开发版可以使用内置 WSL2功能, 优点: * 通过 WSL2 使用其自带 ubuntu系统来运行docker。不占用系统应用商店的Ubuntu * 重启速度贼快。

不过: * 安装Windows 10 Insider Preview内部版本19041或更高版本。 * 使用代理依然 很有可能会报 参考的对象类型不支持尝试的操作 错误。方法参考上面。

标签:Subsystem,sudo,Windows,Linux,wsl,linux,--,ubuntu,docker
来源: https://blog.csdn.net/shangsongwww/article/details/118545137

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有