docker占用内存过高的解决方案

环境:系统macOS13,芯片M1Pro,内存16GB

在mac环境中运行docker,则会出现内存占用过高的情况,如下图:

 

具体原因如下所介绍:

 

也就是说,docker是无法直接运行在macOS中的,虽然它们都是类unix的。故而我猜测在每次运行一个container容器时,可能都会创建一个虚拟的Linux环境,导致内存占用过高。

既然问题已经出现,总要想办法解决。我的思路是创建一个Linux虚拟机,在这个虚拟机里面跑docker。也就是说不要直接在macOS中使用docker,而是找一个“替身”虚拟机跑docker。

这里介绍一下ubuntu家新出的一个工具:multipass。在我观察下来它似乎也是一个类似于docker一样的虚拟容器,但是好处是运行起来十分方便。本人之前也试过使用vmware创建centos虚拟机和使用docker直接创建一个centos容器,但是这两者都有各自的缺点:vmware fusion是预览版,不定时收费,同时centos7这个经典版有些地方不支持m1的芯片,同时centos stream也开始出现了,所以迟迟的在犹豫;docker运行centos容器的操作是很骚,但是一来会同样的遇到内存问题,二是会出现权限的错误(具体记不太清楚了,总之就是进入容器后甚至无法使用systemctl这个命令,试了很久也没解决,后来发现是官方的一个问题,弃)。

总之是兜兜转转换到了ubuntu。而ubuntu最近一直在推他们家的multipass,于是就去试用了一下,不得不说体验感非常好,两分钟就运行起来了一个虚拟机。官网在这里:Multipass orchestrates virtual Ubuntu instances

当运行起来之后,就按照正常的Linux安装docker的方式去做就可以了。附上现在的运行图

运行了四个容器: 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
kswapd是Linux系统的一个内核进程,主要负责管理系统内存的交换和预取机制,确保系统能够高效地利用内存。而Docker则是一种虚拟化技术,可以在单个操作系统上运行多个相互隔离的应用程序。 如果kswapd进程一直占用CPU,可能意味着系统内存出现了问题。以下是一些可能的解决方案: 1. 增加系统内存:当系统内存不足时,kswapd进程会经常运行以提高内存利用率。这时可以通过增加系统内存来缓解问题。 2. 优化内存占用:如果系统中存在进程或应用程序占用过多内存,可以通过优化它们的内存占用降低kswapd进程的负载。可以考虑关闭一些不必要的应用或进程,或者通过修改应用程序或脚本来减少它们的内存占用。 3. 调整系统参数:可以通过修改系统内存管理的一些参数来调整kswapd进程的行为。例如,可以修改/proc/sys/vm/swappiness参数来调整内存页面管理的行为。 4. 检查Docker容器:如果问题与Docker相关,可以检查Docker容器是否占用过多的系统资源,例如内存和CPU。可以使用Docker stats命令查看Docker容器使用的资源情况,然后根据情况调整容器配置。 总之,如果kswapd进程一直占用CPU,需要先了解系统的内存使用情况,并采取相应的措施来调整系统配置。如果问题与Docker有关,也需要检查Docker容器的资源使用情况,并进行必要的优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值