zoukankan      html  css  js  c++  java
  • win10 docker+WSL2 + LxRunOffline

    参考M$官网文档和

    https://www.cnblogs.com/adameta/p/12179922.html

    为什么要在win下用docker

    1 某些不可描述的甲方指定要用windows客户端和服务器。所以得开发伪windows专属的桌面应用。

    把各种后端 数据库,web service都封装成服务,不论部署在本地,还是内网的服务器,用linux开发这些后端服务特别方便。

    2 便于部署。避免各种复杂依赖,端口等等等。

    3 用docker开机自动运行,来代替多进程启动,避免弹出一堆控制台"黑窗口"。

    也便于开发调试。

    为什么 要安装 WSL2

    因为windows下docker  区分为windows container(运行基于windows系统的docker image) 和 linux container(基于linux的镜像),

    我们用docker主要就是后端服务,谁没事用win server啊? 所以大多需要 linux container。

    而win下的docker运行 linux  container依赖的“backend”分2种:

    wsl1 ( win10 封装的一套类linux api ,背后还是转义成win api 到windows kernel, 所以支持的linux命令并不完全)

    VM (通过虚拟机运行linux。  基于hyper-V   WSL2 也属于VM )

    参考  Windows下想使用Linux环境,WSL、Docker、VM应该怎么选择? - 木头龙的回答 - 知乎 https://www.zhihu.com/question/339939686/answer/920731591

    据说基于WSL2的比hyper-V的要快,本着节约生命的目的,当然要用。

    WSL2模式下 docker是1个service, 而 WSL2的linux发行版 就是 docker的 backend。 管理了一切docker 的volume, images, container 

    为什么要用 LxRunOffline 管理 WSL2

    因为默认安装的WSL2 以及后面全部的docker数据就都在C盘了(路径是   %LOCALAPPDATA%/Docker/wsl)。无法修改

    而基于WSL2的docker desktop, 也就无法管理image container的位置了。 稍微在linux下用过一点docker就知道, 镜像和容器的存储目录肯定不能放/ 下 (默认分区很小 10G 20 G), 得改到/home之类的分区去。

    需要用LxRunOffline 对 WSL进行迁移,备份,等等管理

     迁移了WSL,也就迁移了docker的那些Volume container images等等等。

    下面是具体步骤:

    1 操作系统升级到2004

    2 启用2个feature

    powershell 管理员权限

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

    3下载安装补丁

    the latest WSL2 Linux kernel update package for x64 machines:

    https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

    4 重启电脑

    wsl --set-default-version 2

    正常应该显示

    PS C:WindowsSystem32> wsl --set-default-version 2
    有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2

    如果报错,返回第三步

    5 在windows商店 搜索安装一个linux发行版

    比如 Ubuntu20.04

    https://www.microsoft.com/zh-cn/p/ubuntu-2004-lts/9n6svws3rx71?rtc=1#activetab=pivot:overviewtab

     正常的安装,应该看到弹出控制台,显示:

    Installing, this may take a few minutes...
    Please create a default UNIX user account. The username does not need to match your Windows username.
    For more information visit: https://aka.ms/wslusers
    Enter new UNIX username: 

    如果此时报错:

    Installing, this may take a few minutes...
    WslRegisterDistribution failed with error: 0x800701bc
    Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel

    Press any key to continue...

     参考 https://github.com/microsoft/WSL/issues/5393

    还是返回第3步

    6 安装docker desktop

    去docker官网下载。

    https://www.docker.com/get-started

    安装时选择WSL2模式

     7 用LxRunOffline迁移 WSL

    参考

    https://blog.bccn.net/%E9%9D%99%E5%A4%9C%E6%80%9D/67307

    下载LxRunOffline,  目前202009  是 3.5版

    https://github.com/DDoSolitary/LxRunOffline/releases 

    解压后就是exe文件,

    在这个路径下:

    ./LxRunOffline list

    PS D:softdevdockerLxRunOffline-v3.5.0-msvc> ./LxRunOffline list
    docker-desktop
    Ubuntu-20.04
    docker-desktop-data

    其中Ubuntu-20.04 是我从Mircosoft Store里安装的WSL。然后docker-desktop 和 docker-desktop-data 是安装了docker for windows  ,用WSL2模式安装,产生的2个镜像。

    可以认为docker的2个系统依赖 Ubuntu-20.04

    新建文件夹作为移动目标,如

    D:vmwsl

    开始修改WSL安装路径

    LxRunOffline move -n Ubuntu-20.04 -d D:vmwsl

    移动完成可以看见移动出来的文件 ext4.vhdx

    等待移动完成查看

    LxRunOffline get-dir -n Ubuntu-20.04

    但docker的2个还是移动不了。

    LxRunOffline get-dir -n docker-desktop

    PS D:softdevdockerLxRunOffline-v3.5.0-msvc> ./LxRunOffline get-dir -n docker-desktop
    \?C:UsersXXXAppDataLocalDockerwsldistro

    参考

    https://www.cnblogs.com/xhznl/p/13184398.html

    下面是操作方法:

    1 首先关闭docker

    2 关闭所有发行版:

    wsl --shutdown

    3 将docker-desktop-data导出到D:SoftwareDatawsldocker-desktop-datadocker-desktop-data.tar(注意,原有的docker images不会一起导出)

    wsl --export docker-desktop-data D:vmwsldocker-desktop-datadocker-desktop-data.tar

    注销docker-desktop-data:

    wsl --unregister docker-desktop-data

    重新导入docker-desktop-data到要存放的文件夹 D:vmwsldocker-desktop-data

    wsl --import docker-desktop-data D:vmwsldocker-desktop-data D:vmwsldocker-desktop-datadocker-desktop-data.tar --version 2

    看到同样 出现vhdx 虚拟机镜像文件,OK

     

    那么在资源管理器 去 目录:

    %LOCALAPPDATA%/Docker/wsl

    下面是2个文件夹,data 和distro

    现在data空了, distro下只有1个100M的 就是docker-desktop 这个就不用移动了

    8 重启docker

  • 相关阅读:
    Leetcode645.Set Mismatch错误的集合
    Leetcode622.Design Circular Queue设计循环队列
    Leetcode628.Maximum Product of Three Numbers三个数的最大乘积
    Leetcode633.Sum of Square Numbers平方数之和
    Leetcode617.Merge Two Binary Trees合并二叉树
    Leetcode606.Construct String from Binary Tree根据二叉树创建字符串
    SQL Sever实验二 交互式 SQL
    [bzoj2124]等差子序列_线段树_hash
    [bzoj4084][Sdoi2015]双旋转字符串_hash
    [bzoj1708][Usaco2007 Oct]Money奶牛的硬币_动态规划_背包dp
  • 原文地址:https://www.cnblogs.com/xuanmanstein/p/13630416.html
Copyright © 2011-2022 走看看