我需要一个带有6gb内存的Docker容器。我试过这个命令:
docker run -p 5311:5311 --memory=6g my-linux但是它不起作用,因为我登录到了Docker容器,并检查了可用的内存量。这是显示只有2gb可用的输出:
>> cat /proc/meminfo
MemTotal: 2046768 kB
MemFree: 1747120 kB
MemAvailable: 1694424 kB我尝试在Docker应用程序中设置preferences ->。如果我设置了6gb,它就能工作..。我的意思是,我有一个有6gb MemTotal的容器。这样我所有的容器都有6gb..。
我想知道如何使用一些命令或在Docker中设置一些东西,只为一个容器分配6gb的内存。有什么帮助吗?
发布于 2017-06-28 20:40:02
不要依赖/proc/meminfo来跟踪停靠容器内的内存使用情况。/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)。有关此这里的更多信息。
据我所知,没有办法在Dockerfile中设置内存限制(而且我认为不应该存在:Dockerfile是用来构建容器的,而不是运行它们的),但是Dockerfile通过mem_limit和memswap_limit键支持上述选项。
https://stackoverflow.com/questions/44806234
复制相似问题