如何通过终端或DockerFile设置Docker容器的RAM内存

时间:2017-06-28 15:03:11

标签: docker dockerfile

我需要一个具有6GB RAM内存的Docker容器。 我试过这个命令:

docker run -p 5311:5311 --memory=6g my-linux

但是它没有用,因为我登录到Docker Container并检查了可用的内存量。这是输出,显示只有2gb可用:

>> cat /proc/meminfo

MemTotal:        2046768 kB
MemFree:         1747120 kB
MemAvailable:    1694424 kB

我尝试设置首选项 - >推进Docker应用程序。 如果我设置6gb,它的工作原理......我的意思是,我有一个容量为6GB的MemTotal。 这样我所有的容器都会有6gb ......

我想知道如何使用一些命令或在Docker文件中设置一些容器,仅为一个容器分配6gb的内存。有什么帮助吗?

1 个答案:

答案 0 :(得分:5)

不要依赖/proc/meminfo来跟踪docker容器内的内存使用情况。 /proc/meminfo 未经过容器化,这意味着该文件正在显示主机系统的meminfo。

您的/proc/meminfo表示您的主机系统有2G可用内存。在没有获得更多物理内存的情况下,您能够在容器中使6G可用的唯一方法是创建交换分区。

如果您的交换分区大于或等于~4G,您的容器将能够使用该内存(默认情况下,docker对运行容器没有限制。)

如果要将容器可用的内存量明确限制为6G,则可以执行docker run -p 5311:5311 --memory=2g --memory-swap=6g my-linux,这意味着总内存限制为6G(--memory-swap),最高为2G可能是物理内存(--memory)。有关此here的更多信息。

我无法在Dockerfile中设置内存限制(我认为不应该是:Dockerfiles用于构建容器,而不是运行< / em>他们),但是docker-compose通过mem_limitmemswap_limit键支持上述选项。