Docker 容器默认在没有任何资源限制的情况下运行。在容器中运行的进程可以自由使用无限量的内存,这可能会影响相邻容器和主机上的其他工作负载。
这在生产环境中是危险的。每个容器都应配置适当的内存限制,以防止资源消耗失控。这有助于减少争用,从而最大限度地提高整体系统稳定性。
Docker 内存限制如何工作
Docker 允许您对单个容器设置硬内存和软内存限制。这些对可用内存量和达到限制时的行为有不同的影响。
- 硬内存限制对提供给容器的内存设置了绝对上限。超过此限制通常会导致内核内存不足杀手终止容器进程。
- 软内存限制表示容器预期使用的内存量。当容量可用时,允许容器使用更多内存。如果它在内存不足的情况下超过软限制,它可能会被终止。
Docker 还提供了用于设置交换内存约束和更改达到内存限制时发生的情况的控件。您将在以下部分中了解如何使用它们。
设置硬内存和软内存限制
硬内存限制由docker run命令的-mor–memory标志设置。它需要一个值,例如512m(对于兆字节)或2g(对于千兆字节):
$ docker run --memory=512m my-app:latest
容器的最低内存要求为 6MB。尝试使用–memory小于的值6m会导致错误。
–memory-reservation使用标志设