• windows10 使用WSL2安装原生docker


    1.升级WSL2

    我的 win10 wsl默认版本是1,先要升级WSL2不然不支持systemd(后台守护进程)

    双击直接安装就行,安装包网上都能找到: Microsoft.WSL_1.3.17.0_x64_ARM64.msixbundle

    执行 wsl --version 显示这样成功了:

    C:\Users\xx>wsl --version
    WSL 版本: 1.3.17.0
    内核版本: 5.15.90.4-1
    WSLg 版本: 1.0.57
    MSRDC 版本: 1.2.4485
    Direct3D 版本: 1.608.2-61064218
    DXCore 版本: 10.0.25880.1000-230602-1350.main
    Windows 版本: 10.0.19045.2846

    wsl -s centos7 设置为默认进入的发行版  这样直接输入 wsl 就进入centos了

    wsl -l -v 查看当前安装了哪些发行版

    2.安装CentOS7 (很多博客有相关介绍不多说了)

    github上能找到 CentOS7.zip

    解压到指定目录,执行 CentOS7.exe 即可

    3.安装docker
     

    1.  yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    2.  yum install -y docker-ce docker-ce-cli containerd.io
    3. #开机启动
    4. systemctl enable docker
    5. #启动docker服务
    6. systemctl start docker

    升级wsl2就是为了支持daemon进程,需要创建一个文件

     /etc/wsl.conf:
     

    1. [boot]
    2. systemd=true

    4.开机启动wsl 

    折腾很久,采用win计划任务 不行,总是报错0x1,

    所以采用shell:common startup目录内放入快捷方式的方式(开机执行): (之前放shell:startup目录是需要当前用户登录后才执行)

    创建wsl-startup.vbs 文件:

    1. set ws=wscript.CreateObject("wscript.shell")
    2. ws.run "wsl.exe -d centos7, 0

    创建个wsl-startup.vbs 快捷方式 丢到shell:startup目录(win+R 输入shell:common startup 回车就能打开目录),

    放到超级管理员(administrator)账号的 shell:startup目录 不登录可执行, 其它账号要登录才执行

    放到shell:common startup目录,不登录可执行,但似乎每个账号都执行了一次,导致产生两个wsl进程,以下供参考

    1. set ws=wscript.CreateObject("wscript.shell")
    2. rem 以下,放到user1账号的 shell:startup 重启启后总是要输入密码导致执行失败
    3. rem 以下,放到administrator账号的 shell:startup 预先执行一遍保存下密码 居然不用登录就会执行!!
    4. ws.run "runas /savecred /user:user1""wsl.exe -d centos7""", 0
    5. rem 以下,放到administrator账号的 shell:startup 不用登录 仍然用administrator执行, cpau切换用户没用
    6. rem ws.run "cpau -hide -u user1 -p pwd -ex ""wsl.exe -d centos7""", 0
    7. rem 以下,放到martin账号的 shell:startup 重启启后 要登录martin账号才执行
    8. rem 以下,放到administrator账号的 shell:startup 重启启后 不登录能执行且执行账号是administrator
    9. rem ws.run "wsl.exe -d centos7", 0
    10. rem 以下 放到shell:common startup文件夹中,不用登录,并以administrator身份执行 runas切换用户有用,似乎administrator登录后会多出一个命令窗口,似乎每个用户都会执行一遍 导致多创建了一个进程
    11. rem ws.run "runas /savecred /user:user1 ""wsl.exe -d centos7""", 0
    12. rem 以下 放到shell:common startup文件夹中,不用登录,并以administrator身份执行 cpau切换用户没用
    13. rem ws.run "cpau -hide -u user1 -p pwd -ex ""wsl.exe -d centos7""", 0
    14. rem ws.run "cmd.exe /c ""echo %date% %time% end"" > D:\develop\wsl\mywsl.log", 0
    15. rem ws.run "cmd.exe /c echo begin > E:\develop\wsl\mywsl.log", 0
    16. rem set r=ws.run "cmd.exe /c wsl.exe -d centos7", 1
    17. rem ws.run "cmd.exe /c C:\Users\User1\AppData\Local\Microsoft\WindowsApps\wsl.exe -d centos7 > E:\develop\wsl\mywsl.log", 0
    18. rem ws.run "cmd.exe /c echo end >> E:\develop\wsl\mywsl.log", 0

    5.坑

    wsl命令窗口关了,wsl系统以及docker服务就停了,再打wsl进入要5s左右,再docker ps 会卡住5分钟,于是各种折腾,但是都不行。

    后来采用 systemd-analyze blame,journalctl -xe,systemctl status network等 分析发现是network启动失败导致,网上各种方法试了都不行,未找到原因

    network启动失败 直到5分钟超时后,才启动docker服务, 导致 docker ps等命令要等5分钟,

    解决方案: systemctl disable network 把他禁用 就解决了

  • 相关阅读:
    SqlServer备份与还原 System.Data.SqlClient.SqlError: 媒体集有 2 个媒体簇,但只提供了 1 个。必须提供所有成员
    ASP.NET Core 6框架揭秘实例演示[24]:中间件的多种定义方式
    Java实现手动操作定时任务功能的简单例子(动态创建定时任务)
    vue:计算属性,监视属性,绑定class样式与style样式,自定义vue实例代码段
    【C++笔试强训】第七天
    常用的二十种设计模式(下)-C++
    Docker 容器上部署 Zabbix
    taro超过3行隐藏显示展开功能
    计算机毕业设计小程序在线旅游信息管理+后台SSM
    工业控制系统协议的安全性
  • 原文地址:https://blog.csdn.net/laiyangwen1120/article/details/132696298