如何增加/检查Linux上Docker默认的内存?

25

我发现在Windows和Mac上很容易改变RAM容器的分配,只需进入GUI界面即可。但是在Linux上,由于它使用CLI而不是GUI,该怎么做呢?

Docker文档中提到了一个-m标志,但此标志没有任何响应(只会重新打印帮助输出的全部内容),因此我不知道是否有效。它似乎也只适用于容器,而我想改变全局默认设置。

最后,有没有一种方法可以检查当前默认的RAM,以便我可以确保最终所做的任何更改都生效了?


如果您正在使用 docker-compose,则可以使用 ymal 配置来限制资源的消耗。 - frozenOne
2个回答

32

在本机Linux上,Docker可以使用所有可用的主机内存。它使用一种轻量级的基于内核的隔离机制,通常使用标准内核机制共享CPU核心和内存资源(在现代安装中,还包括磁盘空间)。没有控件或设置来限制或增加这个。

在其他平台上,Docker运行一个隐藏的Linux虚拟机以便运行Linux内核来使用这些隔离机制,而Docker Desktop内存控制影响该虚拟机的内存分配。


2
我明白了!那么,当我在Linux上使用“-m”标志传递参数时会发生什么? - James Ronald
2
它在管理容器的cgroup上设置了内存限制。 它与ulimit命令并没有太大的区别,因为它设置了由内核强制执行的限制,但它并没有特定地分配资源。 - David Maze
如果您使用WSL2,Windows中配置最大资源的GUI选项也已经消失了。但是可以通过其他方式进行配置-请参见https://dev59.com/HFIG5IYBdhLWcg3w419n - user2347921

14

这是我如何“检查”Docker容器的内存:

打开Linux命令行并执行以下步骤 -

第1步:检查正在运行的容器。

docker ps

第2步:记下要检查的容器的“CONTAINER ID”,并发出以下命令:

docker container stats <containerID>

例如:

docker container stats c981

这将产生类似以下的输出:

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
c981c9482284        registry            0.00%               4.219MiB / 1.944GiB   0.21%               9.66kB / 0B         0B / 0B             14

'MEM USAGE / LIMIT' 列将给出实际内存使用情况和默认内存分配。

注意:按下ctrl+c退出查看,回到命令提示符。


16
不,问题是如何“改变”内存,而不是如何查看它。 - juergi
2
@juergi 在这篇帖子中还有第二个问题,这意味着它可能应该被关闭并标记为“需要关注”。 - General Grievance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接