启动Windows Linux子系统

安装适用于 Linux 的 Windows 子系统

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

启用“虚拟机平台”可选组件

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

设置WSL2为默认版本

wsl --set-default-version 2

下载Alpine Image

$VERSION="3.21.0"
$ARCH="x86_64"
wget -o alpine-minirootfs-${VERSION}-${ARCH}.tar.gz https://mirrors.tuna.tsinghua.edu.cn/alpine/latest-stable/releases/x86_64/alpine-minirootfs-${VERSION}-${ARCH}.tar.gz

Wsl导入Alpine Image

$INSTALL_PATH="alpine-minirootfs-${VERSION}-${ARCH}.tar.gz"
$ALPINE_IMAGE_PATH="D:\alpine-minirootfs-3.21.0-x86_64.tar.gz"
wsl --import alpine ${INSTALL_PATH} ${ALPINE_IMAGE_PATH}

启动Alpine

wsl -d alpine

安装 Docker

sed -i 's#https\?://dl-cdn.alpinelinux.org/alpine#https://mirrors.tuna.tsinghua.edu.cn/alpine#g' /etc/apk/repositories
apk update && apk upgrade --no-cache
apk add --no-cache openrc docker docker-cli-compose
openrc sysinit
touch /run/openrc/softlevel
touch /etc/network/interfaces
rc-update add docker

Docker 开机启动

echo '''
# Add/Edit the [boot] command and save the file
[automount]
enabled=true
mountFsTab=true
root=/
[network]
generateHosts=true
generateResolvConf=true
hostname=docker
[interop]
enabled=true
appendWidnowsPath=true
[boot]
command = "/usr/bin/env -i /usr/bin/unshare --pid --mount-proc --fork --propagation private -- sh -c 'exec /sbin/init'"
''' > /etc/wsl.conf

echo '''
pid="$(ps -o pid,args | awk '$2 ~ /\/sbin\/init/ {print $1}')"

# Run WSL service script
if [ "$pid" -ne 1 ]; then
  # Export ENV variables
  if [ "$USER" != "root" ]; then
    [ -f "$HOME/.openrc.env" ] && rm "$HOME/.openrc.env"
    export > "$HOME/.openrc.env"
  fi

  exec /usr/bin/nsenter -p -m -t "${pid}" -- su - "$USER"
fi

# Import ENV variables
if [ -f "$HOME/.openrc.env" ]; then
  set -a
  source "$HOME/.openrc.env"
  set +a
  rm "$HOME/.openrc.env"
fi
''' > /etc/profile.d/wsl-init.sh

从Windows 访问Docker

TODO

https://wsl.dev/wsl2init/ https://zenn.dev/ignorant/articles/wsl2_alpine_docker#1.-wsl2-%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB https://dev.to/bowmanjd/install-docker-on-windows-wsl-without-docker-desktop-34m9