作者:single | 来源:互联网 | 2023-01-31 02:55
我需要一个具有6GB RAM内存的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应用程序中设置首选项->高级。如果我设置为6gb,则可以工作...我的意思是,我有一个6gb MemTotal的容器。这样我所有的容器都将有6gb ...
我想知道如何使用一些命令或在Docker File中设置一些内容来仅为一个容器分配6gb的内存。有什么帮助吗?
1> Georg Grab..:
不要依赖于/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
)。关于这方面更多的信息在这里。
我无法在已知的Dockerfile中设置内存限制(我认为应该没有:设置Dockerfile用于构建容器,而不是运行它们),但是docker-compose通过mem_limit
和memswap_limit
键支持上述选项。