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把他禁用 就解决了

相关推荐
ulias2124 小时前
Linux系统中的权限问题
linux·运维·服务器
青花瓷5 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
问简5 小时前
docker 镜像相关
运维·docker·容器
Dream of maid6 小时前
Linux(下)
linux·运维·服务器
齐鲁大虾6 小时前
统信系统UOS常用命令集
linux·运维·服务器
Benszen6 小时前
Docker容器化技术实战指南
运维·docker·容器
ZzzZZzzzZZZzzzz…6 小时前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
Hommy887 小时前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
一叶知秋yyds8 小时前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
斯普信云原生组9 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器