搞钱啊

WINDOWS 11 中使用WSL做Docker in Docker开发

安装WSL

  1. 启用 WSL 和虚拟机平台
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. 重启电脑
  2. 安装 WSL2 内核更新包 https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
  3. 设置 WSL2 为默认
wsl --set-default-version 2
  1. 安装 Linux 发行版(如 Ubuntu 20.04)
wsl --install -d Ubuntu-20.04
  1. 初始化设置用户名和密码
  2. 配置 wsl 资源占用 编辑|创建 .wslconfigC:\Users\ 你的用户名.wslconfig
[wsl2]
memory=1GB    # 限制内存1GB,够用Express/EJS开发
swap=0        # 禁用交换分区,减少磁盘占用
processors=2  # 限制CPU核心数
idleTimeout=600  # 10分钟闲置自动关闭,释放vmmem内存 单位:秒

常见问题

  • 虚拟化未启用:进 BIOS 开启 Intel VT-x/AMD-V,保存重启
  • 版本不兼容:按Win+R输入winver,确认 Windows 版本≥2004(内部版本 19041+)
  • 安装失败:先卸载旧版 WSL,执行wsl --unregister 旧发行版名,再重新安装
  • 内存占用:不用时在 PowerShell 执行wsl --shutdown,vmmem 进程立即消失,释放全部内存

使用Alpine WSL发行版

  1. Microsoft AppStore中下载 Alpine
  2. 使用root用户安装
alpine.exe install --root
  1. 配置国内源 编辑 /etc/apk/repositories,默认系统自带了 vi 编辑器
# Tencent源
https://mirrors.cloud.tencent.com/alpine/latest-stable/community
https://mirrors.cloud.tencent.com/alpine/latest-stable/main
  1. 更新包索引
apk update && upgrade

使用 Containerd 替代 Docker

安装 containerd

  1. 进入 wsl,安装 containerd
apk add containerd
  1. 配置 containerd
# 1. 生成配置目录 和 运行时目录
mkdir -p /etc/containerd
mkdir -p /run/containerd
# 生成默认配置
containerd config default > /etc/containerd/config.toml
#?? 启用 Systemd cgroup 驱动
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
# 2.启动 containerd (后台运行)
containerd &
# 3.解决WSL或chroot环境安装问题
touch /run/openrc/softlevel
# 4. 使用 openrc 管理(如果需要开机自启)
rc-update add containerd default
rc-service containerd start
# 验证安装
containerd --version
rc-service containerd status
# 如果遇到问题
### 1. 缺少目录权限
mkdir -p /run/containerd
chmod 755 /run/containerd
### 2.如果 containerd 启动失败,检查配置:
containerd config default --debug
### 3.查看日志
cat /var/log/containerd.log

安装 CTR、 RUNC 和 CNI-PLUGIN

# 安装ctr
apk add containerd-ctr runc cni-plugins
# 检查是否安装成功
ctr version
runc --version
# 测试拉取镜像
ctr images pull docker.io/library/hello-world:latest