我想将Docker容器的内存限制为1 GB。根据文档,我们可以使用--memory
选项指定所需的内存限制:
$ docker run --memory <size> ...
但是,documentation 没有在页面的任何位置描述参数的格式或单位:
- 内存,-m内存限制
我应该向--memory
以及--memory-reservation
和--memory-swap
等其他相关选项提供哪些单位?只是字节?
答案 0 :(得分:1)
我的RTFM经典案例。 -m, --memory=""
Memory limit (format: <number>[<unit>], where unit = b, k, m or g)
Allows you to constrain the memory available to a container. If the
host supports swap memory, then the -m memory setting can be larger
than physical RAM. If a limit of 0 is specified (not using -m), the
container's memory is not limited. The actual limit may be rounded up
to a multiple of the operating system's page size (the value would be
very large, that's millions of trillions).
选项支持单位后缀,因此我们不需要计算确切的字节数:
$ docker run --memory 1g ... $ docker run --memory 1073741824 ...
因此,要按照问题中的描述启动容量为1 GB的容器,这两个命令都可以正常工作:
--memory-reservation
--memory-swap
和{{1}}选项也支持此约定。
答案 1 :(得分:1)
限制容器对内存的访问权限Docker可以强制执行硬内存 限制,允许容器使用不超过给定的数量 用户或系统内存或软限制,允许容器 除非满足某些条件,否则使用尽可能多的内存 当内核检测到主机上的低内存或争用时 机。当单独使用时,其中一些选项具有不同的效果 或者设置了多个选项时。
这些选项中的大多数采用正整数,后跟后缀
b
,k
,m
,g
,表示字节,千字节,兆字节或千兆字节。
This page还包含一些有关在Windows上运行docker时内存限制的额外信息。
答案 2 :(得分:0)
docker run -m 50m <imageId> <command...>
这是应该给予的方式。这迫使docker容器使用50m的内存。一旦它尝试使用更多的资源,它将被关闭。
但是,使用free -m您将看不到与容器内存使用量有关的任何信息。您必须进入它才能看到允许的内存。