Win10 家庭版 Docker 环境搭建详解(基于 WSL2)

新配Win10笔记本集成Docker搭建基础开发环境,过程有一点点小波折,查阅到的资料也是七零八碎的,经过摸索成功解决,遂将相关笔记整理汇总,给需要的小伙伴参考。

1 Docker Backend选型

1.1 查询本机系统信息

  • cmd或者powershell输入winver获取本机操作系统信息,可以看到我的电脑是win10家庭版,版本是22H2

1.2 养成好习惯:查询官网获取System requirements

对照Docker官网System requirements是为了少走弯路让安装更顺畅,所谓知己知彼百战不殆;我们都知道,Docker支持Hyper-VWSL 2两种可选的后端引擎,查询官网也为理清本机支持哪种引擎及需具备什么条件。官网描述的很清楚:

  • 先看Hyper-V 要求:
    • 结论:家庭版绝缘!目前来看我的机器无法选择Hyper-V作为后端。
  • 没关系我们继续看WSL 2 系统要求:
    • 结论:Windows 10 64-bit: Minimum required is Home or Pro 22H2 (build 19045) or higher, or Enterprise or Education 22H2 (build 19045) or higher.,机器适配WSL 2系统要求

1.3 确定选型:WSL 2

由于所使用机器不支持Hyper-V直接选型WSL 2,其实在 Windows 操作系统中,Docker 使用 WSL 2 作为后端引擎来运行 Linux 容器 ,简化架构的同时提升性能与兼容性,是当前推荐的部署方式。继续补充一些拓展知识(不感兴趣的小伙伴可以直接跳过):

++ WLS 2是什么?

  • WSL 2(Windows Subsystem for Linux 2) 是微软为 Windows 10 和 Windows 11 提供的一种在 Windows 系统中运行 Linux 环境的方式。
  • WSL 2 是一种 轻量级虚拟机环境,使用由微软维护并优化的真实 Linux 内核,提供更高的系统兼容性和更优的性能表现。

++ 其实WLS 2与Hyper-V关系密切

  • WSL 2 是运行在 Hyper-V 虚拟化技术基础上的轻量级 Linux 环境 ,但 不需要开启完整的 Hyper-V 管理器 来使用 WSL 2。
项目 WSL 2 Hyper-V
本质 运行 Linux 的轻量虚拟化子系统 微软的完整虚拟化平台
是否使用虚拟化 ✅ 是 ✅ 是
使用 Hyper-V 内核吗 ✅ 使用 Hyper-V 的核心虚拟化功能(称为 Hyper-V 功能集 ✅ 使用完整 Hyper-V 平台(包括 VM 管理器)
是否需要启用"Hyper-V"功能 ❌ 不强制(不需要完整 Hyper-V 角色) ✅ 需要启用 "虚拟机平台 (VirtualMachinePlatform)" ✅ 需要启用 Hyper-V 平台
资源占用 轻量,按需启动 较重,需要后台运行虚拟机管理器
是否依赖 Hyper-V 虚拟化 ✅ 依赖(使用其子集) ✅ 依赖

2 Docker环境集成实操

2.1 集成及开启WSL 2

2.1.1 开启WSL和虚拟机平台(Virtual Machine Platform)

  • cmd或者powershell执行如下命令
shell 复制代码
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

2.1.2 安装 WSL 2及Ubuntu

  • 安装(执行如下命令)
    • 如果安装失败,也可以微软商店,搜索并手动安装 Ubuntu 20.04 LTS(推荐版本)
shell 复制代码
wsl --install
  • 设置(执行如下命令)
shell 复制代码
wsl --set-default-version 2

2.1.3 启用Ubuntu子系统

  • 查询子系统是否处于运行状态:首次安装通常是Stopped状态
shell 复制代码
wsl --list --verbose
  • 如果子系统是Stopped状态,执行如下命令手动开启
    • 首次启动会提示设置用户及密码,按需设置即可,注意密码是不可见的,自行记忆
shell 复制代码
wsl -d Ubuntu
  • 再次执行wsl --list --verbose确认运行状态是否为Running

2.1.4 【补充】关于后续启动Docker是否需要启动子系统的问题

  • 正常情况下:不需要手动启动 Ubuntu子系统,Docker 会自动唤醒
  • 非正常情况下(例如杀毒软件误杀,进程误杀等):需要手动启动子系统(如果子系统异常Docker会提示错误,根据错误结合wsl --list --verbose判断是否需要wsl -d Ubuntu)

2.2 Docker Desktop安装及配置

2.2.1 Docker Desktop windows系统安装包下载

详见Docker官网,不赘述

2.2.2 指定目录安装

Docker Desktop默认会将软件安装在C:\Program Files\Docker\Docker,这对系统盘存储空间极其不友好,好在可以通过命令行参数的形式指定目录安装(相关说明官网有给出,截图如下)

继续以管理员身份运行PowerShell,执行如下命令(等待命令执行完成,应该需要好几分钟):

  • 命令的具体含义:启动 Docker Desktop Installer.exe 安装程序,静默安装 Docker Desktop 到指定目录,接受许可协议,并指定使用 WSL 2 作为运行后端
shell 复制代码
Start-Process -FilePath "C:\Users\[your_pc_name]\Desktop\Docker Desktop Installer.exe" -ArgumentList "install --quiet --accept-license --installation-dir=`"D:\software\DockerEnv`" --backend=wsl-2" -Wait -NoNewWindow

2.2.2 启动Docker Desktop进入settings进行设置(建议重启)

  • 设置1(★★★★):让 Docker 自动集成到你的默认 WSL 发行版中(比如 Ubuntu) ,可以在该 Linux 子系统中运行 Docker 命令,比如 docker run
  • 设置2(★★★★★):迁移/更改wsl目录
    • 强烈建议迁移或更改,否则随着使用深入C盘空间会报红
    • 设置完整后强烈建议重启

2.3 验证Docker是否安装成功

2.3.1 执行docker --version

通常会看到版本信息

2.3.2 执行docker run hello-world

通常会看到成功日志,并且在Docker Desktop UI中可以看到running的container及有效的Image

  • hello-world如不需要了,参考如下方法删除
shell 复制代码
docker ps -a

# 根据ID删除容器
docker rm [你查询到的容器ID]

# 删除镜像
docker rmi hello-world

3 实战:基于Docker搭建PostgreSQL环境

PostgreSQL(简称 Postgres )是一个功能强大、开源的关系型数据库管理系统(RDBMS) ,被广泛用于 Web 开发、企业系统、大数据平台等场景。它是目前最先进、最具扩展性的数据库之一

3.1 创建Volume

shell 复制代码
# 创建PostgreSQL专用卷
docker volume create pgdata

# 再次查看(现在应该能看到新增加的卷)
docker volume ls

3.2 创建PostgreSQL

shell 复制代码
docker run --name pgserver -e POSTGRES_USER=[your_user_name] -e POSTGRES_PASSWORD=[your_password] -e POSTGRES_DB=[your_db_name] -v pgdata:/var/lib/postgresql/data -p 5432:5432 -d postgres:15

3.3 测试验证

3.3.1 psql command line tools安装

  • 下载地址,如果确定仅需要使用命令行功能,安装过程选装Command Line Tools即可
  • 记得将[your_path]\PostgreSQL\15\bin添加至环境变量
  • 验证是否成功:psql --version

3.3.2 连接progresql测试

  • 执行psql -h localhost -p 5432 -U admin -d production输入密码进入Postgre,执行\l,执行\q退出。

4 填坑

4.1 Docker拉取资源失败的问题

由于我有爬梯,其实基本没碰到什么失败或不能访问的情况,对于没有爬梯的,不妨找找镜像源,也欢迎留言分享靠谱的镜像源。

以上就是新配Win10笔记本集成Docker搭建基础开发环境过程笔记梳理,希望能够帮到有需要的同学,欢迎交流。

相关推荐
littleplayer几秒前
iOS 单元测试详细讲解-DeepSeek
前端
异常君1 分钟前
HTTP头中的Accept-Encoding与Content-Encoding深度剖析
后端·nginx·http
littleplayer1 分钟前
iOS 单元测试与 UI 测试详解-DeepSeek
前端·单元测试·测试
夜熵4 分钟前
Vue中nextTick()用法
前端·面试
小桥风满袖4 分钟前
Three.js-硬要自学系列15 (圆弧顶点、几何体方法、曲线简介、圆、椭圆、样条曲线、贝塞尔曲线)
前端·css·three.js
洋流5 分钟前
JavaScript事件流机制详解:捕获、冒泡与阻止传播
前端·javascript
啊花是条龙5 分钟前
在 Angular 中使用 ECharts 并处理 xAxis 标签的点击事件
前端·angular.js
异常君8 分钟前
MySQL重复数据克星:7种高效处理方案全解析
java·后端·mysql
凌冰_10 分钟前
CSS3 基础(背景-文本效果)
前端·css·css3
异常君12 分钟前
Spring 定时任务执行一次后不再触发?5 大原因与解决方案全解析
java·后端·spring