docker stats 命令输出中的“MEM USAGE / LIMIT”列状态是什么?

use*_*750 6 memory ram docker

我从大小为: 的图像创建了一个 docker 容器~90 MB

容器运行良好。我想知道容器在其主机上必须使用多少 RAM。所以我运行了“ docker stats ”命令,它显示了以下输出:

CONTAINER ID        NAME                   CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
66c266363746        sbrconfigurator_v0_2   0.00%               32.29MiB / 740.2MiB   4.36%               0B / 0B             15.1MB / 4.1kB      10
Run Code Online (Sandbox Code Playgroud)

这里显示内存使用情况如下:

MEM USAGE / LIMIT
32.29MiB / 740.2MiB
Run Code Online (Sandbox Code Playgroud)

我不知道这 740.2 MB 内存意味着什么,是否意味着740.2 MBRAM 已分配给该容器,即740.2 MBRAM 是否正在被该容器使用。

请帮助我了解此容器必须使用多少 RAM(主机)。主机是Linux、Ubuntu。

BMi*_*tch 2

内存限制显示了在 OOM 杀死容器之前 docker 将允许容器使用多少内存。如果没有在容器上设置内存限制,则默认为 docker 主机上的所有可用内存。对于 Win/Mac 版 Docker,这是分配给嵌入式 VM 的内存,您可以在设置中进行调整。您可以在 compose 文件中设置内存限制,也可以直接在docker runcli 上设置:

$ docker run -itd --name test-mem -m 1g busybox /bin/sh
f2f9f041a76c0b74e4c6ae51dd57070258a06c1f3ee884d07fef5a103f0925d4

$ docker stats --no-stream test-mem
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O BLOCK I/O           PIDS
f2f9f041a76c        test-mem            0.00%               360KiB / 1GiB       0.03%               5.39kB / 0B 3.29MB / 0B         1
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,busybox 没有使用 1GB 内存,仅使用 360KB。

如果不设置限制,可以转换以 GiB 为单位的内存限制 (GiB*1024 = KB),以显示与您在命令中看到的free主机总内存非常接近的内容。不确定两者之间的微小差异是否会导致内核或其他一些开销。