docker运行“--memory”选项期望的是什么单位?

时间:2017-10-10 17:29:01

标签: docker

我想将Docker容器的内存限制为1 GB。根据文档,我们可以使用--memory选项指定所需的内存限制:

$ docker run --memory <size> ...

但是,documentation 没有在页面的任何位置描述参数的格式或单位

  

- 内存,-m内存限制

我应该向--memory以及--memory-reservation--memory-swap等其他相关选项提供哪些单位?只是字节?

3 个答案:

答案 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 documentation

  

限制容器对内存的访问权限Docker可以强制执行硬内存   限制,允许容器使用不超过给定的数量   用户或系统内存或软限制,允许容器   除非满足某些条件,否则使用尽可能多的内存   当内核检测到主机上的低内存或争用时   机。当单独使用时,其中一些选项具有不同的效果   或者设置了多个选项时。

     

这些选项中的大多数采用正整数,后跟后缀   bkmg,表示字节,千字节,兆字节或千兆字节。

This page还包含一些有关在Windows上运行docker时内存限制的额外信息。

答案 2 :(得分:0)

docker run -m 50m <imageId> <command...> 

这是应该给予的方式。这迫使docker容器使用50m的内存。一旦它尝试使用更多的资源,它将被关闭。

但是,使用free -m您将看不到与容器内存使用量有关的任何信息。您必须进入它才能看到允许的内存。