【docker】windows10 docker 安装到D盘
一、前言
以前只在linux安装docker,但现在需要在windows装docker,还要装到D盘,试了三天终于装上了,不记录一点儿东西太对不起我浪费的三天时间。
之前参考了很多博客,虽然教程很多,但都零零散散,有些地方也没说清楚,为什么这么做,排查问题的时候会造成很多莫名其妙的问题。所以我写详细点儿。
操作系统:Windows 10 家庭版。
【注意:大部分命令都需要管理员权限】
二、安装过程
1. 准备
1.1 启动windows的WSL功能
参考:Windows Subsystem for Linux (WSL, Ubuntu) 最新安装教程(2024.11 更新)
10分钟学会Docker的安装和使用
【通常情况下,Docker Desktop 安装程序会自动启用 WSL 功能,不需要手动启用。但以防万一还是检查一下比较好】
-
打开 “控制面板”,选择 “程序”,然后点击 “启动或关闭 Windows 功能”。
-
在显示的列表中找到 “适用于 Linux 的 Windows 子系统”,勾选选项。
-
点击 “确定”,等待系统完成配置,按要求重启电脑。
1.2 安装wsl(Windows Subsystem for Linux)
有两种方法:
方法一:一步到位
参考:win11安装的Docker 坎
右键菜单,选择以管理员身份打开 PowerShell,运行以下命令:
(后台开启科学上网比较快)
wsl --install
这个命令使系统自动启用 WSL 功能、安装 WSL2 内核、设置默认版本,并安装默认的 Linux 发行版。
这是一个简化 WSL(Windows Subsystem for Linux)安装过程的命令。它首次在 Windows 10 版本 2004 及更高版本 和 Windows 11 中引入,用于一键安装 WSL 及其相关组件。
细节作用
- 自动启用 WSL 功能:
- 启用 Microsoft-Windows-Subsystem-Linux 功能(WSL 的基础)。
- 启用 VirtualMachinePlatform 功能(WSL2 必需)。
- 安装 WSL2 内核:
- 自动下载并安装 WSL2 内核更新包(无需手动下载 .msi 文件)。
- 设置 WSL2 为默认版本:
- 将 WSL2 设置为默认版本,以后安装的 Linux 发行版都会默认使用 WSL2。
- 安装默认的 Linux 发行版:
- 自动安装默认的 Linux 发行版(通常是 Ubuntu,除非你指定其他发行版)。
方法二:分步执行
参考:将 Docker 安装到 Windows 的 D 盘的方法
步骤1:启用 WSL 功能
以管理员身份打开 PowerShell,运行以下命令:
(1) 启用 WSL 功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
这个命令的作用是启用 WSL 功能,使得 Windows 能够运行 Linux 发行版。
命令解释:
- dism.exe: DISM(Deployment Imaging Service and Management Tool)是 Windows 中的一个命令行工具,用于管理 Windows 映像和功能。
- /online: 表示对当前运行的 Windows 操作系统进行操作。
- /enable-feature: 启用指定的 Windows 功能。
- /featurename:Microsoft-Windows-Subsystem-Linux: 指定要启用的功能名称,这里是 WSL(Windows Subsystem for Linux)。
- /all: 启用该功能的所有依赖项。
- /norestart: 命令执行完成后不自动重启系统。
(2) 启用虚拟机平台(WSL2 必需)
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
这个命令的作用是启用虚拟机平台功能,这是 WSL2 所必需的。WSL2 是基于虚拟化技术的,因此需要启用虚拟机平台来支持 WSL2 的运行。
命令解释:
- dism.exe: 同上,DISM 工具。
- /online: 对当前运行的 Windows 操作系统进行操作。
- /enable-feature: 启用指定的 Windows 功能。
- /featurename:VirtualMachinePlatform: 指定要启用的功能名称,这里是虚拟机平台(Virtual Machine Platform)。
- /all: 启用该功能的所有依赖项。
- /norestart: 命令执行完成后不自动重启系统。
然后重启电脑,以使更改生效。
步骤2:安装WSL内核
这是一个由微软提供的 WSL2 内核更新包,用于在 Windows 上启用 WSL2 所需的虚拟化组件。
下载WSL2 内核更新包:
WSL2 Linux 内核更新包(微软官方)
下载完成后,双击 .msi 文件运行安装程序,按照提示完成安装。
安装完成后,设置 WSL2 为默认版本:
wsl --set-default-version 2
这是为了以后安装的 Linux 发行版都会默认使用 WSL2。
步骤3:更新 WSL 的核心组件和 Linux 内核到最新版本。
wsl --update
步骤4:WSL安装 Linux 发行版(这里是 Ubuntu)
(后台开启科学上网比较快)
wsl --install -d Ubuntu
或者安装其他指定的 Linux 发行版
这一步只是为了保证wsl能正常安装Linux发行版, 之后的docker会用另外的Linux发行版
1.3 重启并检查
步骤1. 重启:
安装完成后,系统会提示你重启电脑。
步骤2. 启动 Linux 发行版:
- 重启后,从开始菜单中找到安装的 Linux 发行版(如 Ubuntu)并单击运行。
- 第一次启动时,系统会提示你设置用户名和密码。
步骤3. 检查:
管理员模式打开powershell:
wsl -l -v
确保 VERSION 为 2,表示 Ubuntu 正在使用 WSL2。
2. 安装docker desktop 到D盘
参考:Windows装Docker至D盘/其他盘(最新,最准确,直接装)
2.1. 官网下载Docker Desktop Installer.exe
(后台开启科学上网比较快)
https://www.docker.com/get-started/
把下载好的exe放到你要安装的D盘目录下。
比如:
D:program
2.2. 以管理员身份打开cmd,并转到你下载文件的目录。
2.3. 在cmd内运行下面代码,并根据你的安装需求做出修改:
先想好你打算把docker安装在什么目录下,提前新建一个docker目录和docker/data目录
比如:
D:programDocker
D:programDockerdata
然后执行命令(路径自己修改):
start /w "" "Docker Desktop Installer.exe" install -accept-license --backend=wsl-2 --installation-dir="D:programDocker" --wsl-default-data-root="D:programDockerdata" --windows-containers-default-data-root="D:programDocker"
解释:
- 使用 start /w 启动安装程序,并等待安装完成。
- 安装程序会按照指定的参数进行安装:
- 使用 WSL 2 作为后端。
- 将 Docker Desktop 安装到 D:programDocker。
- 将 WSL 2 数据存储到 D:programDockerdata。
- 将 Windows 容器数据存储到 D:programDocker。
- 通过 -accept-license 参数,跳过许可协议的确认步骤。
2.4. 启动docker desktop
右键管理员身份运行docker desktop桌面图标
再检查设置resources中的data路径。
安装完成。
安装并启动docker desktop 后docker会自动在wsl中创建一个linux发行版docker-desktop
检查发行版并设置默认子系统:
参考:https://www.cnblogs.com/haima/p/18697360
wsl -l -v
wsl -s docker-desktop
wsl -l -v
查看docker版本:
docker -v
3. 配置镜像
参考:Docker Desktop国内镜像源
按上面这个教程做,很快的。这里不赘述了。
三、遇到的问题和解决方法
1. 安装docker时是否需要双反斜杠转义?
解决:不知道,最好用双反吧。参考https://blog.csdn.net/m0_51290571/article/details/144635357 说是要双反的。
2. 看到一些教程说要启动hyper-v,但在windows功能中没有看见。
解决:docker后端WSL 2 或 Hyper-V二选一就行了。
但因为Hyper-V 仅在 Windows 10/11 专业版、企业版或教育版中可用,家庭版不支持 Hyper-V。所以我们不用Hyper-V,而是用WSL2
参考:亲测有用!Docker Desktop安装到D盘,非C盘
3. 打开docker desktop时弹窗报错:Docker Desktop distro installation failed
解决: 查看弹窗内的具体错误:
ensuring main distro is deployed: deploying “docker-desktop”: preparing directory “D:programDockerdatamain” for WSL distro “docker-desktop”: creating distro destination dir “D:programDockerdatamain”: mkdir D:programDockerdata: Access is denied.
checking if isocache exists: CreateFile wsl$docker-desktop-dataisocache: The network name cannot be found.
权限问题,表明 Docker Desktop 在尝试创建 D:programDockerdata 目录时被拒绝访问。
说明安装前没有手动创建data目录,重做就行了。
4. 打开docker desktop时又一个弹窗报错:Docker Desktop distro installation failed
解决:查看具体错误:
ensuring main distro is deployed: deploying “docker-desktop”: preparing directory “D:programDockerdatamain” for WSL distro “docker-desktop”: creating distro destination dir “D:programDockerdatamain”: mkdir D:programDockerdatamain: Access is denied.
checking if isocache exists: CreateFile wsl$docker-desktop-dataisocache: The network name cannot be found.
还是权限问题。Docker Desktop 仍然无法在 D:programDockerdatamain 目录下创建所需的文件或目录。此外,WSL2 的 isocache 目录也无法访问,可能是由于 WSL2 配置问题或 Docker Desktop 的 WSL2 集成未正确设置。
解决方法:右键,以管理员身份运行 Docker Desktop
5. 错误代码: Wsl/InstallDistro/Service/RegisterDistro/ERROR_ALREADY_EXISTS
正在下载: Ubuntu
正在安装: Ubuntu
已存在具有所提供名称的分发。使用 --name 选择其他名称。
错误代码: Wsl/InstallDistro/Service/RegisterDistro/ERROR_ALREADY_EXISTS
解决:这个错误表明你已经安装了名为“Ubuntu”的WSL(Windows Subsystem for Linux)发行版。由于系统中已经存在同名的发行版,WSL无法再次安装同名的发行版。
6. 适用于 Linux 的 Windows 子系统没有已安装的分发。
解决:直接一步到位:wsl --install
7. 启动docker desktop后并没有创建wsl对应发行版
解决:那说明打开docker desktop 有报错弹窗,先解决弹窗错误再说。
参考
- https://blog.csdn.net/wangtcCSDN/article/details/137950545
- https://zhuanlan.zhihu.com/p/27384714765
- https://blog.csdn.net/pingxiaozhao/article/details/145285520
- https://blog.csdn.net/m0_51290571/article/details/144635357
- https://www.cnblogs.com/haima/p/18697360
- https://blog.csdn.net/weixin_45145684/article/details/144729149