Docker Desktop Vmmem内存占用过高问题及完美解决方案

 更新时间:2024年09月19日 14:17:28   作者:_院长大人_  
DockerDesktopVmmem内存占用过高问题常见于其基于WSL运行类似虚拟机的机制,通过编辑.wslconfig文件限制WSL资源,可有效降低内存占用,具体操作包括创建.wslconfig文件,调整内存配置,并重启Docker Desktop,需注意内存设置不宜过小,以免影响Docker运行和容器稳定性

Docker Desktop Vmmem内存占用过高问题解决方案

内存占用过高原因

主要原因是docker desktop的实现及基于wsl(Windows子系统),相当于在Windows上同时开了一个虚拟机,如果不对wsl的资源进行限制,它将会极大的获取系统资源.所以我们只需要对wsl的最大资源进行限制即可

解决方案

修改wsl配置文件

官方地址

具体配置:

# Settings apply across all Linux distros running on WSL 2
[wsl2]
# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB 
# Sets the VM to use two virtual processors
processors=2
# Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
kernel=C:\\temp\\myCustomKernel
# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
kernelCommandLine = vsyscall=emulate
# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=8GB
# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
swapfile=C:\\temp\\wsl-swap.vhdx
# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
pageReporting=false
# Turn off default connection to bind WSL 2 localhost to Windows localhost
localhostforwarding=true
# Disables nested virtualization
nestedVirtualization=false
# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
debugConsole=true

在用户目录创建个.wslconfig文件,即C:\Users\<UserName>\.wslconfig

创建完成后将配置文件内容粘贴进去

[wsl2]
#配置wsl的核心数
processors=2
#配置wsl的内存最大值
memory=512MB
#配置交换内存大小,默认是电脑内存的1/4
swap=8GB
#关闭默认连接以将 WSL 2 本地主机绑定到 Windows 本地主机
localhostForwarding=true
#设置临时文件位置, 默认 %USERPROFILE%\AppData\Local\Temp\swap.vhdx
swapfile=D:\\temp\\wsl-swap.vhdx

保存后以管理员打开powershell,执行如下语句关闭wsl:

wsl --shutdown

重启docker desktop即可

后续问题(缺点)

如果内存设置的太小了,后续可能会出现docker desktop 运行一段时间退出,或者容器会突然停止工作

所以我们的memory=512MB要根据自己启动的容器所占内存大小稍大一点即可,但是如果是后续需要增加容器需要自己手动再次扩大memory

到此这篇关于Docker Desktop Vmmem内存占用过高问题解决方案的文章就介绍到这了,更多相关Docker Desktop Vmmem内存占用过高内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用docker搭建redis主从的方法步骤

    使用docker搭建redis主从的方法步骤

    这篇文章主要介绍了使用docker搭建redis主从的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • docker找不到镜像无法成功下载ragflow-main的问题解决办法

    docker找不到镜像无法成功下载ragflow-main的问题解决办法

    这篇文章主要介绍了docker找不到镜像无法成功下载ragflow-main的问题解决办法,文中通过代码及图文将解决的办法介绍的非常详细,对大家学习或者使用docker具有一定的参考借鉴价值,需要的朋友可以参考下
    2025-04-04
  • 详解Docker退出容器不关闭容器的方法

    详解Docker退出容器不关闭容器的方法

    进入docker容器后如果退出容器,容器就会变成Exited的状态,那么如何退出容器让容器不关闭呢?现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • docker实现导出、导入和数据搬迁

    docker实现导出、导入和数据搬迁

    本篇文章主要介绍了docker实现导出、导入和数据搬迁,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 让非root用户构建Docker镜像的三种方法

    让非root用户构建Docker镜像的三种方法

    在默认情况下,Docker 需要 root 权限或 sudo 才能运行,这对于日常开发和 CI/CD 流水线可能不够方便,那么,如何让 非 root 用户 也能构建和运行 Docker 容器呢?本篇文章将介绍 三种方法 来实现这一目标,需要的朋友可以参考下
    2025-04-04
  • 详解基于docker-swarm搭建持续集成集群服务

    详解基于docker-swarm搭建持续集成集群服务

    这篇文章主要介绍了详解基于docker-swarm搭建持续集成集群服务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • docker-compose常见的参数命令详解

    docker-compose常见的参数命令详解

    Compose 是用于定义和运行多容器 Docker 应用程序的工具,下面这篇文章主要给大家介绍了关于docker-compose常见参数命令的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 利用Docker分层构建优化镜像大小的实现

    利用Docker分层构建优化镜像大小的实现

    合适docker镜像文件大小不仅影响容器启动效率,也影响资源占用效率,本文介绍如何利用分层方式构建docker镜像,采用多种方式避免镜像文件太大而影响性能,需要的朋友可以参考下
    2025-01-01
  • 使用Golang玩转Docker API的实践

    使用Golang玩转Docker API的实践

    这篇文章主要介绍了使用Golang玩转Docker API的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 解决Docker报错:“docker build“ requires exactly 1 argument.

    解决Docker报错:“docker build“ requires exactly&nb

    这篇文章主要介绍了解决Docker报错:“docker build“ requires exactly 1 argument.具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论