我从大小为: 的图像创建了一个 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 MB
RAM 已分配给该容器,即740.2 MB
RAM 是否正在被该容器使用。
请帮助我了解此容器必须使用多少 RAM(主机)。主机是Linux、Ubuntu。
内存限制显示了在 OOM 杀死容器之前 docker 将允许容器使用多少内存。如果没有在容器上设置内存限制,则默认为 docker 主机上的所有可用内存。对于 Win/Mac 版 Docker,这是分配给嵌入式 VM 的内存,您可以在设置中进行调整。您可以在 compose 文件中设置内存限制,也可以直接在docker run
cli 上设置:
$ 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
主机总内存非常接近的内容。不确定两者之间的微小差异是否会导致内核或其他一些开销。