docker-desktop 使用 12 GB RAM 来运行一个具有 24 MB RAM 的容器?

2024-03-22

在我看来就像 WSL2 容器docker-desktop使用 12 GB RAM 来运行一个具有 24 MB RAM 的容器。是什么赋予了? (详情如下)。

另外,当我将所有进程中的所有驻留 RAM (VSZ) 加起来时docker-desktop,总共只有 4687251 KB 或 4.4 GB,那么剩下的 7 GB RAM 到哪里去了呢?

我尝试从任务栏重新启动 Docker Desktop,并尝试终止docker-desktopWSL2 容器(带有wsl.exec -t),两者没有什么区别。我重新启动了整个 Windows 机器,现在它使用了更加合理的 2GB RAM。与我使用 595MB RAM 的 Ubuntu 20.04 WSL2 相比,这仍然是很多。

那么:为什么是docker-desktop使用 12GB RAM 来服务一个小容器?我可以在不重新启动整个机器的情况下解决这个问题吗?

# What is docker-desktop-data? It doesn't support any commands...
$ wsl.exe -d docker-desktop-data free -m

# docker-desktop is using approx 12 GB RAM
$ wsl.exe -d docker-desktop free -m

             total       used       free     shared    buffers     cached
Mem:         25510      12245      13264        399       1461       8191
-/+ buffers/cache:       2592      22917
Swap:         7168          2       7165

# but docker containers are only using 24 MB?
$ docker stats --no-stream

CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT     MEM %     NET I/O         BLOCK I/O   PIDS
2f29ebe21db3   gitlab-runner   0.04%     24.55MiB / 24.91GiB   0.10%     7.49MB / 18MB   0B / 0B     30

# Sort by and sum up the VSZ values from ps in the dockerdesktop container
$ wsl.exe -d docker-desktop ps -o pid,user,vsz,rss,comm,args | perl -ane '$mem = $F[2]; $mem = $1 * 1024 if $mem =~ /(.*)m$/; printf "%9s $_", $mem; $totmem += $mem ; END { printf "Totmem: %10d\n", $totmem }' | sort | tail -n 10

   113664   259 root     111m  14m containerd-shim  /usr/bin/containerd-shim-runc-v2 -namespace services.linuxkit -id docker -address /run/containerd/containerd.sock
   113664   418 root     111m  13m containerd-shim  /usr/bin/containerd-shim-runc-v2 -namespace services.linuxkit -id socks -address /run/containerd/containerd.sock
   113664   493 root     111m  13m containerd-shim  /usr/bin/containerd-shim-runc-v2 -namespace services.linuxkit -id vpnkit-forwarder -address /run/containerd/containerd.sock
   145408  1119 root     142m  36m gitlab-runner    gitlab-runner run --user=gitlab-runner --working-directory=/home/gitlab-runner
   150528   176 root     147m  41m containerd       /usr/bin/containerd
   712704    26 root     696m  20m vpnkit-bridge    /usr/bin/vpnkit-bridge --pid-file=/run/vpnkit-bridge.pid --addr=stdio guest
   723968    16 root     707m  25m wsl-bootstrap    wsl-bootstrap run --base-image /mnt/host/c/Program Files/Docker/Docker/resources/wsl/docker-for-wsl.iso --version-pack /mnt/host/c/Program Files/Docker/Docker/resources/docker.tar --cli-iso /mnt/host/c/Program Files/Docker/Docker/resources/wsl/docker-wsl-cli.iso
   729088   234 root     712m  30m diagnosticsd     /usr/local/bin/diagnosticsd
   730112   316 root     713m  31m lifecycle-serve  /usr/bin/lifecycle-server
Totmem:    4687251


查看此处记录的 WSL2 配置文件:
https://learn.microsoft.com/en-us/windows/wsl/wsl-config#configure-global-options-with-wslconfig https://learn.microsoft.com/en-us/windows/wsl/wsl-config#configure-global-options-with-wslconfig
您可以通过创建来限制 WSL 引擎的使用,例如 3GB 和 2vCPU%userprofile%\.wslconfig文件如下:

[wsl2]
memory=3GB
processors=2

据我了解,内存是在所有 WSL 命名空间/发行版之间共享的,您看到键入 free 的内存主要是由其他发行版中的文件缓存占用的。 要快速且以肮脏的方式释放 RAM,请以 root 身份执行sync; echo 3 > /proc/sys/vm/drop_caches在您的任何 WSL2 发行版中。
根据 docker-desktop-dataHERE https://stackoverflow.com/a/61431088/6345305您可以检查答案,它只是容器的后备存储

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker-desktop 使用 12 GB RAM 来运行一个具有 24 MB RAM 的容器? 的相关文章

  • CGImageRelease:[不是类型发布]:发送到已释放实例的消息

    我在代码 CGImageRelease imageToSave 的最后一行收到此错误 不是类型发布 消息发送到已释放的实例 请解释原因以及我需要使用什么来修复它 我正在使用 ARC 但我认为这不适用于 CG 对象 在测试代 码是否有效后 我
  • ptr_vector如何管理内存?

    我目前正在使用 c 使用 opengl 进行较低级别的编码 我来自一个沉重的 objc 背景 所以我对内存管理有一些了解 但我似乎无法理解 boost 库如何管理容器类型 例如ptr vector 我认为我的问题与我不知道如何ptr vec
  • RAY Python 框架内存不足

    我用 ray 创建了一个简单的远程函数 它占用的内存很少 然而 运行一小段时间后 内存稳步增加 并且出现 RayOutOfMemoryError 异常 下面的代码是这个问题的一个非常简单的例子 result transformed nump
  • 设置了 LARGEADDRESSAWARE 标志的应用程序获得的虚拟内存较少

    我有一个 32 位应用程序 由一个 EXE 和多个 DLL 组成 EXE 是用 LARGEADDRESSAWARE标志设置 所以我预计在 64 位操作系统上我应该获得 4 GB 的用户地址空间 但在某些 64 位 Win 7 系统上 我只能
  • Java 中的内存管理

    如何在Java中手动删除对象 有没有类似的方法obj delete or obj kill 没有真正的办法 Java有一个特殊的垃圾收集器这会为你做到这一点 一旦您的对象没有任何对它的引用 它就会在某个时候被垃圾收集器拾取并销毁 From
  • 自动释放对象的保留/复制

    我想确保我在这里正确理解内存管理 是否有任何特殊原因要在这里使用一种 allocateCurrentDate 方法而不是另一种方法 另外 所有这些都不会导致内存泄漏 对吗 在 h 中我们有 NSDate currentDate1 NSDat
  • 获取进程段的开始和结束 C/C++

    我需要获取以下进程段的开始和结束地址 代码 数据 堆栈 环境 我了解它如何位于内存中 但不知道如何使用 api 调用或其他方式获取它 我找到了如何使用此代码开始某些片段 include
  • 如何使用可用内存有效地比较 1,000 张图像

    这是一个棘手的问题 我的磁盘中存储了大约 1 000 张图像 我想通过成对比较来找到彼此相似的图像 所以我必须做周围1 000 999 2 https stackoverflow com questions 46958633 generat
  • 释放指针向量,但内存仍在使用中

    我不知道下面的代码有什么问题 我正在删除所有指针 但是当我使用 top 命令查看内存时 我可以看到仍然有大量内存分配给程序 我在这里缺少一些东西来释放内存吗 include
  • 哪个对缓存最友好?

    我试图很好地掌握面向数据的设计以及如何在考虑缓存的情况下进行最佳编程 基本上有两种情况我无法完全确定哪个更好以及为什么 是拥有一个对象向量更好 还是拥有对象原子数据的多个向量更好 A 对象向量示例 struct A GLsizei mInd
  • 利用“写入时复制”将数据复制到 Multiprocessing.Pool() 工作进程

    我有一点multiprocessingPython 代码看起来有点像这样 import time from multiprocessing import Pool import numpy as np class MyClass objec
  • 在 C 中释放 NULL 指针是一个好习惯吗? [复制]

    这个问题在这里已经有答案了 可能的重复 ptr 为 NULL 的 free ptr 是否会损坏内存 https stackoverflow com questions 1938735 does freeptr where ptr is nu
  • 运行时之前初始化的数据段值将存储在哪里?

    通常数据段在C code位于RAM易失性存储器 由初始化数据段组成 未初始化数据段 BSS 堆栈内存和堆 堆栈内存仅在运行时调用例程和在push and pull的价值观 堆用于动态内存分配调用malloc calloc and reall
  • 查找 Java 中的内存使用情况

    以下是我需要解决的场景 我想出了两种解决方案 我需要维护从数据库获取的数据的缓存 以便在 Swing GUI 上显示 每当我的 JVM 内存超过其分配内存的 70 时 我需要警告用户有关过度使用的情况 一旦 JVM 内存使用率超过 80 那
  • 不担心“retainCount”吗?真的吗?

    有人告诉我不要担心保留计数 我明白我不应该决定release or retain使用基于条件逻辑retainCount 但我不应该担心吗 我认为这些在某种程度上与内存使用相对应 例如 如果我有一堆子视图UIView我也放入了NSArray能
  • 使用工厂方法设置 __weak 变量似乎会使对象存活时间过长

    我创建了一个 Person 类 在其中实例化了两个对象 int main int argc const char argv autoreleasepool Person weak pweak Person new Person p Pers
  • 内存地址是否指向一个字节的信息?

    以下是 DTS 文件的摘录 linux arch powerpc boot dts 板名 dts memory device type memory reg lt 0x00000000 0x40000000 gt 1GB at 0 嵌入式设
  • laravel 基本查询中“允许的内存大小已耗尽 134217728 字节”

    我不知道为什么我无法让以下工作正常工作 DB table twitter hashtags gt paginate 5 每次我得到 第二个数字往往不同 Allowed memory size of 134217728 bytes exhau
  • 演员邮箱溢出。斯卡拉

    我目前正在与 scala 的两位演员合作 一 producer 产生一些数据并将其发送到parcer 生产者发送一个HashMap String HashMap Object List Int 通过消息 以及this标记发件人 parcer
  • c++ 12位变量,我该怎么做?

    我正在构建一个体素引擎 所以我担心内存使用情况 使用 12 位而不是 16 位块 ID 可以节省大量内存 我有一个 3D 块 id 数组 每个 id 都有一个静态配置 我不确定实现这一目标的好方法是什么 有没有一种方法可以获取一块原始内存并

随机推荐

  • XML:

    与问题类似 XML那个问号是什么意思 https stackoverflow com questions 39119165 xml what does that question mark mean例如 感叹号是什么意思 下面来自 的含义
  • PGAdmin 显示 Heroku 的数据库量过多

    我正在学习一些后端的东西 我在本地创建了一个测试数据库并填充了一些数据 然后使用以下命令将数据库转储到 SQL 文件 pg dump U USERNAME DATABASE no owner no acl f backup sql 最后将其
  • 在文件搜索中排除 Eclipse/Aptana 中查找的文件类型

    有没有办法在 Aptana 或 Eclipse 文件搜索中排除图像类型 我想搜索所有非图像文件 而不是指定我要搜索的所有文件类型 尝试添加一个 在您不想匹配的模式前面标记 put cgi pm sql 在文件名模式部分中 我正在使用 Ecl
  • 为什么接受数组的 C++ 模板并不比根据 GCC 5.3 和 Clang 4.0 接受指针的模板更专业?

    为什么接下来的两个模板声明不明确 因此两者都不比另一个更专业 我知道这个问题在 Stack Overflow 上已经被多次提出 但通常人们会回答如何解决歧义 而不是回答为什么会发生这种情况 I template
  • 在远程主机中:无法与主机 smtp.gmail.com 建立连接 [连接超时 #110]

    部署后 当我尝试发送邮件时出现以下错误 500 500内部服务器错误 Swift TransportException 无法与主机 smtp gmail com 建立连接 连接超时 110 堆栈跟踪 at in SF ROOT DIR li
  • Android 模拟器 - Wifi 错误

    我正在使用 Android SDK 模拟器广告尝试连接到网络 我无法在设置 gt 无线和网络中执行此操作 在我需要打开 WiFi 的地方 我收到 错误 怎么解决呢 Gorov 关闭模拟器 关闭以太网 火线和任何其他网络接口 他们全部 我的意
  • 在同一程序中调用 srand() 两次[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 为什么当我在两个截然不同的点调用 srand 时会导致数字不是随机的 一旦我删除其中一个 它就会恢复正常 这取决于你如何称呼它 的目的sr
  • 在 JavaScript 中,如果我分配给一个具有 getter 但没有 setter 的对象属性,会发生什么情况?

    在下面的代码中 都使用了console log o x print 1 任务会发生什么情况o x 2 就这样被忽略了吗 var o get x return 1 console log o x 1 o x 2 console log o x
  • Java:在后台更新有大量行的 JTable

    我正在编写一个简单的 Java Swing 实用程序 它将从 MQ JMS 服务器读取消息并将它们显示在 JTable 中 private void getMessages try if null Queue Queue close Clo
  • 如何隐藏 emacs 创建的备份文件?

    我在使用 vi 很长时间后才开始使用 emacs 让我烦恼的一件事是 每当我修改文件 保存它并退出 emacs 时 我都会看到在同一目录中创建一个名为filename 如果我编辑的文件是filename 有什么办法可以摆脱这个吗 或者隐藏这
  • 将预测与 svyglm 结合使用

    我发现了一些奇怪的行为predict和svyglm对象从survey包裹 如果你的新数据在predict具有一个级别的因子 字符会输出错误 Error in contrasts lt tmp value contr funs 1 isOF
  • 如何使用 Ruby MiniTest::Spec 和 Rails 进行 API 集成测试?

    我正在构建一个包含 Rails API 的应用程序 并希望使用 Ruby MiniTest Spec 进行测试 有什么好的设置方法吗 例如 良好的目录组织 包含文件的良好方式等 我正在使用 Rails 3 In Action 一书中的指南
  • 在 Windows 上使用 Emacs 编译 C++ 程序

    我已经使用 Emacs 进行基本文本编辑有一段时间了 但从今天开始 我尝试使用它进行 C 编译 在过去的几个小时里 我一直在寻找如何解决这个问题 但我在他们的技术中不断遇到障碍 我认为其中一些与教程过时有关 基本上 我想做的就是能够通过 M
  • FCM/GCM JSON 有效负载 - 如何指定大图标?

    我正在使用 firebase 端点发送推送通知 它正在成功运行 我正在使用邮递员将请求发送到 FCM 我的问题是我不明白如何发送大图标 FCM 有两种可以发送的有效负载 数据有效负载和通知有效负载 See here https fireba
  • Web 控制浏览器后退按钮

    我正在使用导航 2 和setUrlStrategy PathUrlStrategy 我添加了WillPopScope但是onWillPop单击浏览器的后退按钮时不会调用 Widget build context return WillPop
  • 了解 LISP 中的绑定变量和自由变量

    我正在阅读SICP 又出现了绑定变量和自由变量的话题 然而 我对此感到困惑 术语 绑定变量 仅适用于形式参数变量吗 此外 文本还指出过程定义 绑定 其形式参数 这让我感到困惑 因为有些人说我们将值 绑定 到变量 显然 当我们谈论不同类型的变
  • Gulp 复制空目录

    In my gulp构建我已经创建了一个运行的任务after所有的编译 丑化和缩小都已经发生 此任务只是复制所有内容src进入dest早期任务尚未触及 处理的目录 我遇到的一个小问题是 这会导致目录中出现空目录dest目录 有没有办法告诉g
  • [UWP]调整BitmapImage的大小、压缩并获取base64字符串

    这是我的第一个主题 我正在 UWP 中重写在 Silverlight 8 WP8 中开发的应用程序 我在从 BitmapImage 获取 Base64 编码字符串时遇到问题 我工作了很多天都找不到解决方案 总之我需要 从设备图库中选择图像
  • H2 控制台和 Spring Security - PermitAll() 不起作用

    我正在创建rest api并实现Spring Security 一切正常 但我希望 目前 当我仍在开发时 能够让任何未经授权的人打开localhost 8080 console 我的代码 Override protected void co
  • docker-desktop 使用 12 GB RAM 来运行一个具有 24 MB RAM 的容器?

    在我看来就像 WSL2 容器docker desktop使用 12 GB RAM 来运行一个具有 24 MB RAM 的容器 是什么赋予了 详情如下 另外 当我将所有进程中的所有驻留 RAM VSZ 加起来时docker desktop 总