Windows10 wsl2 ubuntu22.04 docker安装
1. 环境准备
首先需要明确 Windows 安装 Docker 的一些先决条件:
- 确保 Window 版本在 10/11 以上
- 确保系统启用了 虚拟化支持
- 确保系统支持 HyperV 组件
- 确保系统安装了 WSL2 最新版本
- 确保虚拟化所需的 Windows 功能服务已经开启
HyperV 组件支持
systeminfo | findstr /C:"Hyper-V"
Hyper-V 要求: 已检测到虚拟机监控程序。将不显示 Hyper-V 所需的功能。
一般的 Windows 个人家庭版默认不带 HyperV,如果发现 HyperV组件未安装,可通过脚本进行安装。
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
将以上脚本保存为 hyperv.cmd 文件,双击运行可完成安装。
脚本执行完成后,重新检查以确认 HyperV 安装完成。
安装 WSL2 最新版本
访问如下地址获取安装包进行安装:
https://github.com/microsoft/WSL/releases
安装完成之后,设置版本并检查状态:
> wsl --set-default-version 2
> wsl -v
WSL 版本: 2.6.1.0
内核版本: 6.6.87.2-1
WSLg 版本: 1.0.66
MSRDC 版本: 1.2.6353
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26100.1-240331-1435.ge-release
Windows: 10.0.19045.5965
ps:如果wsl -v失败,进入:https://learn.microsoft.com/en-us/windows/wsl/install-manual
下载:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi 然后双击运行
配置wsl2
编辑 %USER_HOME%/.wslconfig文件:

对于 Windows 10 版本,采用如下配置:
[wsl2]
networkingMode=nat
memory=4GB # 限制 WSL 2 VM 使用的内存不超过 4GB
processors=2 # 设置 WSL 2 VM 使用两个虚拟处理器
swap=8GB # 设置交换分区大小为 8GB[experimental]
autoMemoryReclaim=dropcache
保存 .wslconfig 文件,重启wsl服务:
wsl --shutdown wsl
开启虚拟化服务功能
打开控制面板 -> 程序 -> 启用或关闭系统功能,
将如下系统功能打开:
- 虚拟机平台
- HyperV
- 适用于WIndows的Linux子系统


启用后根据提示重启系统后生效。
安装 Linux 发行版
离线安装,参考文档:
https://learn.microsoft.com/en-us/windows/wsl/install-manual

我下载的Ubuntu22.04,大家可以自行选择
D盘创建WSL文件夹
提前下载7zip
将下载的 Ubuntu2204-221101.AppxBundle 放到 WSL 文件夹中
使用7zip解压 Ubuntu2204-221101.AppxBundle 到 Ubuntu2204-221101 目录,进入 Ubuntu2204-221101

将 Ubuntu_2204.1.7.0_x64 目录移动到 D:/WSL目录下 ,进入 Ubuntu_2204.1.7.0_x64 ,双击执行 ubuntu.exe

2. Ubuntu初始化
换源
备份原来源
# 备份原来源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
打开/etc/apt/sources.list
sudo vim /etc/apt/sources.list
# 使用vim打开后,英文输入a,进编辑模式,输入下边内容
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse# 然后按 Esc 输入:wq
保存修改后的源文件后,更新源以使其生效:
sudo apt update
sudo apt upgrade -y
开通ssh服务
sudo apt install openssh-server -y
sudo vim /etc/ssh/sshd_config
# 使用vim打开后,英文输入a,进编辑模式
PermitRootLogin yes
Port 22# 然后按 Esc 输入:wq
sudo systemctl restart ssh
完事后使用xshell登录操作更方便
Ubuntu上安装Docker准备
检查系统环境
# 检查系统版本
lsb_release -a# 检查内核版本
uname -r# 检查磁盘空间
df -h# 检查当前用户
whoami
id# 安装必要的依赖包
sudo apt install -y \apt-transport-https \ca-certificates \curl \gnupg \lsb-release \software-properties-common \iptables \wget \jq
配置iptables(WSL2需要)
# 更新iptables替代方案
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy# 验证iptables配置
sudo iptables --version
创建Docker数据目录
# 创建Docker数据目录
sudo mkdir -p /opt/docker# 设置目录所有者和权限
sudo chown root:root /opt/docker
sudo chmod 755 /opt/docker# 验证目录创建
ls -ld /opt/docker
创建Docker子目录结构
# 预创建一些重要的子目录
sudo mkdir -p /opt/docker/{containers,image,network,volumes,swarm,tmp,plugins}# 验证目录结构
sudo ls -la /opt/docker/
Docker仓库配置
清理可能存在的旧配置
# 删除可能存在的旧配置
sudo rm -f /etc/apt/sources.list.d/docker.list
sudo rm -f /usr/share/keyrings/docker-archive-keyring.gpg
sudo rm -f /usr/share/keyrings/docker.gpg# 确保目录存在
sudo mkdir -p /usr/share/keyrings
添加Docker官方GPG密钥
# 下载Docker GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg# 设置密钥文件权限
sudo chmod a+r /usr/share/keyrings/docker.gpg# 验证密钥文件
ls -la /usr/share/keyrings/docker.gpg# 验证密钥内容
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/docker.gpg --list-keys
添加Docker仓库
# 添加Docker仓库到APT源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 验证仓库配置
cat /etc/apt/sources.list.d/docker.list# 更新包列表
sudo apt update
验证Docker仓库
# 检查Docker包是否可用
apt-cache policy docker-ce# 查看可用的Docker版本
apt-cache madison docker-ce | head -5
创建Docker配置目录
# 创建Docker配置目录
sudo mkdir -p /etc/docker# 设置配置目录权限
sudo chown root:root /etc/docker
sudo chmod 755 /etc/docker
创建daemon.json配置文件
# 创建优化的Docker配置文件
sudo vim /etc/docker/daemon.json
# 使用vim打开后,英文输入a,进编辑模式,输入下边内容
{"data-root": "/opt/docker","storage-driver": "overlay2","log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "3"},"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://do.nark.eu.org","https://dc.j8.work","https://dockerproxy.com","https://gst6rzl9.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","http://mirrors.ustc.edu.cn/","https://mirrors.tuna.tsinghua.edu.cn/","http://mirrors.sohu.com/"],"max-concurrent-downloads": 10,"max-concurrent-uploads": 5,"iptables": true,"ip-forward": true,"bridge": "docker0","default-address-pools": [{"base": "172.19.0.0/16","size": 24}],"experimental": false,"features": {"buildkit": true},"insecure-registries": ["registry.docker-cn.com","docker.mirrors.ustc.edu.cn"]
}
安装Docker Engine
# 安装Docker CE及相关组件
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 验证安装
docker --version
docker compose version
启动和配置Docker服务
启动Docker服务
# 启动Docker服务
sudo service docker start# 等待服务启动# 检查服务状态
sudo service docker status# 检查Docker进程
ps aux | grep dockerd | grep -v grep
验证目录结构
# 检查/opt/docker目录结构
echo "Docker数据目录结构:"
sudo ls -la /opt/docker/# 注意:Docker子目录是按需创建的,运行容器后才会出现
echo ""
echo "注意:以下目录由Docker按需创建,初始安装后可能不存在:"
for dir in containers image network volumes; doif [ -d "/opt/docker/$dir" ]; thenecho "✓ $dir 目录存在"elseecho "• $dir 目录将在使用时自动创建"fi
done# 验证Docker是否能在此目录中工作
echo ""
echo "验证Docker数据目录功能:"
if docker info | grep -q "/opt/docker"; thenecho "✓ Docker数据根目录配置正确"
elseecho "✗ Docker数据根目录配置可能有问题"
fi
使用Docker
参照菜鸟教程:https://www.runoob.com/docker/docker-container-usage.html
