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

相关推荐
企鹅侠客24 分钟前
Linux性能调优使用strace来分析文件系统的性能问题
linux·运维·服务器
qinyia1 小时前
WisdomSSH解决因未使用Docker资源导致的磁盘空间不足问题
运维·服务器·人工智能·后端·docker·ssh·github
❀͜͡傀儡师1 小时前
Docker 一键安装godoos
运维·docker·容器
6***B481 小时前
Nginx搭建负载均衡
运维·nginx·负载均衡
2501_939909051 小时前
Web与Nginx网站服务(1)
运维·nginx
奔跑吧邓邓子2 小时前
CentOS 7性能飞升秘籍:实战系统优化与调优
linux·运维·centos·实战·系统优化·性能调优
Broken Arrows2 小时前
Docker原理之一的Namespace详解
运维·docker·容器
翼龙云_cloud2 小时前
亚马逊云渠道商:如何利用AWS工具进行日常安全运维?
运维·安全·云计算·aws
qinyia2 小时前
WisdomSSH如何高效检查服务器状态并生成运维报告
linux·运维·服务器·数据库·人工智能·后端·ssh
w***48829 小时前
Linux安装redis
linux·运维·redis