我需要一个具有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的内存。有什么帮助吗?
答案 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_limit
和memswap_limit
键支持上述选项。