即时释放正在运行的Docker容器的一些内存

时间:2016-05-19 01:37:28

标签: docker

假设有一个使用固定内存配置创建的Docker容器。我可以动态释放一些内存吗?因为我们可以使用LXC中的简单命令lxc-cgroup -n name memory.limit_in_bytes 256M来执行此操作。

2 个答案:

答案 0 :(得分:2)

如果没有:

,则无法释放容器内存
  1. 重新启动容器
  2. 清除主机内存
  3. 这是因为Docker容器被表示为主机系统上的进程。因此,您需要释放与容器进程关联的内存。据我所知,这很困难,特别是因为进程可能依赖于共享内存结构等。

    如果您确实需要释放内存,可以使用以下命令来帮助清除主机内存,假设您使用的是Linux:

    将内存缓冲区中的数据刷新到磁盘: $ sync

    清除操作系统页面缓存: $ echo 1 > /proc/sys/vm/drop_caches

答案 1 :(得分:1)

它自己的容器并没有使用太多内存。它们的设计重量很轻。可以把它想象成主机上的围栏区域,只需要一些磁带就可以将容器与主机的其余部分分开。

内核必须包含cgroup,命名空间,接口,设备等,但这可以忽略不计。

Docker本身也会为它的容器管理带来少量开销,但这通常可以忽略不计(除非你把一千个端口映射到容器中)。

内存的主要用途是在容器中运行的进程。如果将容器设置为上限,容器将不会使用256MB,这将只是分配开始失败之前的上限。

如果要释放已用内存,则要在容器中运行的进程需要具备该功能,或者可以使用内存重新启动进程。