在 Windows 环境下使用 Docker,开发者可直接在 WSL(Ubuntu)内独立安装 Docker Engine,无需依赖任何 Windows 端 Docker 工具,全程无凭据报错、无系统兼容问题,同时支持远程机通过 TCP 端口操作,实测可用。本文将详细介绍完整安装流程、避坑要点及远程访问配置,助力开发者快速部署可用的 Docker 环境。
一、方案核心优势
本文采用「WSL 内独立安装 Docker Engine」方案,核心优势在于脱离 Windows 系统对 Docker 的管控,无需依赖任何桌面端工具,从根源上规避各类系统兼容、凭据相关报错,同时适配国内网络环境,支持远程操作,适合开发者本地开发、远程管控等多种场景。
二、环境准备
- 系统环境:Windows 10/11 + WSL2(Ubuntu 发行版,本文以 Ubuntu 22.04/24.04 为例)
- 前提条件:WSL2 已正常启用,网络连接正常
- 核心需求:本地 WSL 可正常运行 Docker,支持远程机通过 TCP 端口操作目标电脑的 Docker
三、完整操作流程
第一步:WSL 内独立安装 Docker Engine(国内镜像源,避网络坑)
默认 Docker 官方源在国内访问较慢,甚至会出现 GPG 密钥获取失败(curl: (35) Recv failure: Connection reset by peer),因此采用阿里云镜像源安装,全程一键脚本,无需手动修改。
打开 WSL(Ubuntu)终端,复制粘贴以下完整脚本,直接运行(无需手动干预):
# 阿里云源一键安装 Docker Engine(适配国内网络,避坑版)
# 1. 更新系统并安装依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
# 2. 添加阿里云 Docker GPG 密钥(替代官方,避免网络拦截)
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 3. 添加阿里云 Docker 源(速度快,无拦截)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 4. 安装 Docker Engine 及相关组件
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 5. 配置用户权限(无需 sudo 即可执行 docker 命令)
sudo usermod -aG docker $USER
newgrp docker
# 6. 配置国内镜像源(解决拉取镜像慢/失败问题)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1panel.live",
"https://mirror.ccs.tencentyun.com",
"https://hub-mirror.c.163.com"
]
}
EOF
# 7. 启动 Docker 服务(WSL 通用命令,兼容无 systemd 场景)
sudo service docker start
# 8. 验证安装(输出版本即成功)
docker --version
sudo service docker status
关键避坑点
- 若执行 curl 命令仍报错,检查网络是否正常,或替换为其他国内镜像源(如华为云、腾讯云)。
- newgrp docker 命令用于立即生效用户权限,无需重启终端。
- WSL 部分版本不支持 systemctl 命令,因此用 sudo service docker start 启动服务,更稳定。
第二步:验证 Docker 本地运行
安装完成后,必须验证 Docker 是否能正常运行,避免后续远程访问踩坑。
- 查看 Docker 服务状态:
sudo service docker status
预期输出:显示「active (running)」,说明 Docker 服务启动成功。
- 运行 hello-world 镜像,验证 Docker 功能正常:
docker run hello-world
预期输出:成功拉取镜像并显示「Hello from Docker!」,说明 Docker 安装、配置、镜像源均正常。
第三步:配置远程访问
若需通过远程机操作目标电脑的 Docker,需开放 TCP 2375 端口,配置步骤如下(目标电脑 WSL 终端执行):
- 安装 net-tools 工具(用于查看端口监听状态):
sudo apt install -y net-tools
- 修改 Docker 服务配置,开放远程 TCP 端口:
# 修改 Docker 服务启动参数,添加远程访问端口
sudo sed -i '/ExecStart/c\ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375' /usr/lib/systemd/system/docker.service
# 重新加载配置并重启 Docker
sudo systemctl daemon-reload
sudo service docker restart
# 验证端口监听(确认 2375 端口已开放)
sudo netstat -tulpn | grep 2375
预期输出:显示「:::2375」和「dockerd」,说明端口监听成功。
- Windows 端放行防火墙(目标电脑执行):
以管理员身份打开 PowerShell,执行以下命令,放行 2375 端口,允许远程机访问:
New-NetFirewallRule -DisplayName "Docker TCP 2375" -Direction Inbound -Protocol TCP -LocalPort 2375 -Action Allow
第四步:远程机测试访问(最终验证)
在远程机(发起远程操作的电脑)终端执行以下命令,验证远程访问是否成功:
# 配置远程连接(替换为目标电脑的内网 IP,如 192.168.1.100)
export DOCKER_HOST="tcp://目标电脑IP:2375"
# 测试远程运行 Docker 容器
docker run hello-world
预期输出:成功拉取镜像并显示「Hello from Docker!」,说明远程访问配置成功。
四、常见问题与兜底方案
问题1:执行 netstat 命令提示「Command 'netstat' not found」
解决方案:安装 net-tools 工具,执行 sudo apt install -y net-tools 即可。
问题2:sudo netstat -tulpn | grep 2375 无输出(端口未监听)
解决方案:重新执行 Docker 服务配置命令,检查命令是否正确,或替换为以下方式修改配置:
# 若 sed 命令修改失败,直接修改 /etc/default/docker
echo 'DOCKER_OPTS="-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375"' | sudo tee -a /etc/default/docker
sudo service docker restart
问题3:远程访问提示「Cannot connect to the Docker daemon」
排查步骤:
- 确认目标电脑 Docker 服务已启动(sudo service docker status)。
- 确认目标电脑 2375 端口已监听(sudo netstat -tulpn | grep 2375)。
- 确认目标电脑防火墙已放行 2375 端口。
- 确认远程机输入的目标电脑 IP 是内网 IP(不是 127.0.0.1)。
问题4:执行 docker 命令提示权限不足
解决方案:重新执行权限配置命令,确保用户已加入 docker 组:
sudo usermod -aG docker $USER
newgrp docker