1. 环境准备
首先需要明确 Windows 安装 Docker 的一些先决条件:
- 确保 Window 版本在 10/11 以上
- 确保系统启用了 虚拟化支持
- 确保系统支持 HyperV 组件
- 确保系统安装了 WSL2 最新版本
- 确保虚拟化所需的 Windows 功能服务已经开启
HyperV 组件支持
json
systeminfo | findstr /C:"Hyper-V"
Hyper-V 要求: 已检测到虚拟机监控程序。将不显示 Hyper-V 所需的功能。
一般的 Windows 个人家庭版默认不带 HyperV,如果发现 HyperV组件未安装,可通过脚本进行安装。
bash
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
安装完成之后,设置版本并检查状态:
vbnet
> 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 版本,采用如下配置:
json
[wsl2]
networkingMode=nat
memory=4GB # 限制 WSL 2 VM 使用的内存不超过 4GB
processors=2 # 设置 WSL 2 VM 使用两个虚拟处理器
swap=8GB # 设置交换分区大小为 8GB
[experimental]
autoMemoryReclaim=dropcache
保存 .wslconfig 文件,重启wsl服务:
jsoncss
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初始化
换源
备份原来源
shell
# 备份原来源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
打开/etc/apt/sources.list
shell
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
保存修改后的源文件后,更新源以使其生效:
shell
sudo apt update
sudo apt upgrade -y
开通ssh服务
sh
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准备
检查系统环境
bash
# 检查系统版本
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需要)
bash
# 更新iptables替代方案
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
# 验证iptables配置
sudo iptables --version
创建Docker数据目录
bash
# 创建Docker数据目录
sudo mkdir -p /opt/docker
# 设置目录所有者和权限
sudo chown root:root /opt/docker
sudo chmod 755 /opt/docker
# 验证目录创建
ls -ld /opt/docker
创建Docker子目录结构
bash
# 预创建一些重要的子目录
sudo mkdir -p /opt/docker/{containers,image,network,volumes,swarm,tmp,plugins}
# 验证目录结构
sudo ls -la /opt/docker/
Docker仓库配置
清理可能存在的旧配置
bash
# 删除可能存在的旧配置
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密钥
bash
# 下载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仓库
bash
# 添加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仓库
bash
# 检查Docker包是否可用
apt-cache policy docker-ce
# 查看可用的Docker版本
apt-cache madison docker-ce | head -5
创建Docker配置目录
bash
# 创建Docker配置目录
sudo mkdir -p /etc/docker
# 设置配置目录权限
sudo chown root:root /etc/docker
sudo chmod 755 /etc/docker
创建daemon.json配置文件
bash
# 创建优化的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
bash
# 安装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服务
bash
# 启动Docker服务
sudo service docker start
# 等待服务启动
# 检查服务状态
sudo service docker status
# 检查Docker进程
ps aux | grep dockerd | grep -v grep
验证目录结构
bash
# 检查/opt/docker目录结构
echo "Docker数据目录结构:"
sudo ls -la /opt/docker/
# 注意:Docker子目录是按需创建的,运行容器后才会出现
echo ""
echo "注意:以下目录由Docker按需创建,初始安装后可能不存在:"
for dir in containers image network volumes; do
if [ -d "/opt/docker/$dir" ]; then
echo "✓ $dir 目录存在"
else
echo "• $dir 目录将在使用时自动创建"
fi
done
# 验证Docker是否能在此目录中工作
echo ""
echo "验证Docker数据目录功能:"
if docker info | grep -q "/opt/docker"; then
echo "✓ Docker数据根目录配置正确"
else
echo "✗ Docker数据根目录配置可能有问题"
fi
使用Docker
参照菜鸟教程:https://www.runoob.com/docker/docker-container-usage.html