这个问题花了一天的时间来解决,在网上有一些参考,但是都不太满意。
- 解决Docker使用WSL2项目运行慢的问题 这个具体怎么操作没有写
-
docker desktop win10挂载问题解决 这个的解决方案有些trick
我阅读了官方文档,梳理出了如下的解决方案,我自己觉得还比较make sense
问题说明
我们使用WSL 2来运行Docker,通常会使用挂载的功能,把windows的文件挂在到Docker中,但是这种跨文件系统的操作性能不佳。
解决思路
把windows系统的文件挪到WSL系统下,然后在WSL子系统中(这里选择Ubuntu)启动docker(同时执行文件挂载),这样进入Docker后的IO操作不存在跨系统操作,速度会有较大提升。
为了达到上述目的,我们需要安装一个中介:Ubuntu(WSL的发行版),把windows系统的文件挪到wsl文件系统(Ubuntu)中,然后在Ubuntu中启动Docker。
解决方案
- 打开PowerShell,输入命令
wsl --set-default 2
,设置发行版本默认使用WSL 2 - 输入命令
wsl --install -d Ubuntu
安装Ubuntu - 安装好之后输入命令
wsl -l -v
,可以看到Docker和Ubuntu都在Running(VERSION务必是2) -
打开Docker桌面,在设置选项中,打开WSL Integration,并手动重启Docker。这个设置允许在Ubuntu中使用Docker。
image.png
- 将想要挂在的数据移动到WSL文件系统中。在windows系统中执行:
cp {WIN_DATA} \\wsl$\Ubuntu\home
,其中\\wsl$\Ubuntu\home
是WSL文件系统Ubuntu发行版的\home目录。 - 进入到Ubuntu系统。执行
wsl -d Ubuntu
,然后执行docker run -v /home:{DOCKER_PATH} -it {IMAGE}
,进入docker后,IO操作就飞快了。
respect
网上很多人的方案给了我启发,但是看到很多方案并没有解决问题,抛砖引玉,希望能解决大家的问题。
网友评论