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

复制代码
 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 yum install -y docker-ce docker-ce-cli containerd.io

#开机启动
systemctl enable docker

#启动docker服务
systemctl start docker

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

/etc/wsl.conf:

复制代码
[boot]
systemd=true

4.开机启动wsl

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

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

创建wsl-startup.vbs 文件:

复制代码
set ws=wscript.CreateObject("wscript.shell")
ws.run "wsl.exe -d centos7, 0

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

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

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

vbscript 复制代码
set ws=wscript.CreateObject("wscript.shell")

rem 以下,放到user1账号的 shell:startup 重启启后总是要输入密码导致执行失败
rem 以下,放到administrator账号的 shell:startup 预先执行一遍保存下密码 居然不用登录就会执行!!
ws.run "runas /savecred /user:user1""wsl.exe -d centos7""", 0

rem 以下,放到administrator账号的 shell:startup 不用登录 仍然用administrator执行, cpau切换用户没用
rem ws.run "cpau -hide -u user1 -p pwd -ex ""wsl.exe -d centos7""", 0

rem 以下,放到martin账号的 shell:startup 重启启后 要登录martin账号才执行
rem 以下,放到administrator账号的 shell:startup 重启启后 不登录能执行且执行账号是administrator
rem ws.run "wsl.exe -d centos7", 0


rem 以下 放到shell:common startup文件夹中,不用登录,并以administrator身份执行 runas切换用户有用,似乎administrator登录后会多出一个命令窗口,似乎每个用户都会执行一遍 导致多创建了一个进程
rem ws.run "runas /savecred /user:user1 ""wsl.exe -d centos7""", 0

rem 以下 放到shell:common startup文件夹中,不用登录,并以administrator身份执行 cpau切换用户没用
rem ws.run "cpau -hide -u user1 -p pwd -ex ""wsl.exe -d centos7""", 0


rem ws.run "cmd.exe /c ""echo %date% %time% end"" > D:\develop\wsl\mywsl.log", 0

rem ws.run "cmd.exe /c echo begin > E:\develop\wsl\mywsl.log", 0
rem set r=ws.run "cmd.exe /c wsl.exe -d centos7", 1
rem ws.run "cmd.exe /c C:\Users\User1\AppData\Local\Microsoft\WindowsApps\wsl.exe -d centos7 > E:\develop\wsl\mywsl.log", 0
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把他禁用 就解决了

相关推荐
未来之窗软件服务19 分钟前
WAF负载均衡+蜜罐混淆安全体系-东方仙盟
运维·安全·负载均衡·仙盟创梦ide·东方仙盟·阿雪技术观·网关开发
Linux-lucky43 分钟前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
Jenni see43 分钟前
服装厂裁剪自动化怎么搞?自动铺布+激光裁床+六轴机械手裁片分拣,省料省人的实战指南
运维·自动化
阿标在干嘛1 小时前
容器编排的“场景适配”:我们为什么在部分服务中回归了Docker Compose?
运维·docker·容器
墨理学AI2 小时前
虚拟机导致的服务器交换内容占用过大(服务器卡顿)问题 快速解决
运维·服务器
熊猫钓鱼>_>3 小时前
平行视界兼容模式与魔法变量配置避坑【鸿蒙心迹】
运维·服务器·开发语言·笔记·华为·harmonyos·openharmony
T量子永生4 小时前
Unisoc(紫光展锐) Kernel 6.18 DDK 编译框架详解
linux·运维·spring
无言听风雨丶4 小时前
Nginx 深度实战:从架构原理到生产排错
运维·nginx·架构
曦夜日长4 小时前
主从 Reactor 高并发服务器实战 (三):服务器套接字Socket模块详解与实现
运维·服务器·网络
IT19955 小时前
Docker 快速部署 DM8 达梦数据库|完整踩坑笔记
笔记·docker·容器