
生产环境的windows server大多数时候是运行在虚拟机中的,要安装docker desktop的话,需要安装wsl2,但是wsl2需要开启虚拟嵌套,因此选择在windows server中安装wsl1,然后直接在里面安装docker engine
启用wsl功能
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
设置默认使用wsl1
wsl --set-default-version 1
安装ubuntu
wsl --install -d Ubuntu-20.04
安装过程中需要设置一个用户名密码,正常输入就行
安装完成后输入wsl -l就能看到安装的ubuntu了
查看已安装的发行版和存储位置
wsl -l -v

关闭wsl
wsl --shutdown
导出到D盘
wsl --export Ubuntu-20.04 D:\wsl\Ubuntu-20.04-backup.tar
注销ubuntu
wsl --unregister Ubuntu-20.04
在要导入磁盘上建立文件夹
mkdir D:\wsl\Ubuntu-20.04
导入刚刚导出的ubuntu
wsl --import Ubuntu-20.4 D:\wsl\Ubuntu-20.04 D:\wsl\Ubuntu-20.04-backup.tar
导入后需要启动wsl
wsl -d Ubuntu-20.4
看到类似下述日志输出就成功了

wsl安装好了以后就有了一个ubuntu环境,此时按照这个文档安装docker即可
docker安装好了以后还会遇到一个问题,wsl1不支持IPv6 iptables,会导致WSL1无法创建桥接网络和默认网络,这里我们直接禁用掉Docker的IPV6和桥接网络
# 创建Docker配置目录
sudo mkdir -p /etc/docker
# 创建WSL 1专用配置
sudo tee /etc/docker/daemon.json << 'EOF'
{
"storage-driver": "vfs",
"exec-opts": ["native.cgroupdriver=cgroupfs"],
"iptables": false,
"ip-forward": false,
"ip-masq": false,
"ipv6": false,
"bridge": "none",
"data-root": "/var/lib/docker",
"userland-proxy": false,
"live-restore": true,
"debug": true,
"log-level": "debug",
"default-address-pools": [
{
"base": "172.17.0.0/16",
"size": 24
}
],
"dns": ["8.8.8.8", "8.8.4.4"]
}
EOF
# 重启Docker
sudo service docker start
下面是常见的wsl命令
# 查看WSL版本
wsl --version
# 查看状态
wsl --status
# 列出可用发行版
wsl --list --online
# 列出已安装的发行版
wsl -l -v
# 或
wsl --list --verbose
# 安装新发行版
wsl --install -d Ubuntu-22.04
# 设置默认发行版
wsl --set-default Ubuntu-22.04
# 注销(删除)发行版
wsl --unregister Ubuntu-22.04
# 启动默认发行版
wsl
# 或
wsl ~
# 启动指定发行版
wsl -d Ubuntu-22.04
wsl -d Ubuntu-22.04 --cd ~
# 以特定用户启动
wsl -d Ubuntu-22.04 --user root
wsl -d Ubuntu-22.04 -u username
# 立即关闭所有WSL实例
wsl --shutdown
# 停止指定发行版
wsl --terminate Ubuntu-22.04
# 查看运行状态
wsl --list --running
# 导出发行版(备份)
wsl --export Ubuntu-22.04 D:\backup\ubuntu.tar
# 导入发行版
wsl --import Ubuntu-Backup D:\WSL\ D:\backup\ubuntu.tar
# 导入时指定版本
wsl --import Ubuntu-New D:\WSL\Ubuntu backup.tar --version 2