即时发布正在运行的Docker容器的一些内存

假设有一个使用固定内存configuration创build的Docker容器。 我可以在飞行中释放一些记忆吗? 因为我们可以在LXC中用一个简单的命令lxc-cgroup -n name memory.limit_in_bytes 256M来做到这一点。

您不能释放容器内存,

  1. 重新启动容器
  2. 清除主机的内存

这是因为Docker容器被表示为主机系统上的进程。 因此,您需要释放与容器进程关联的内存。 据我了解,这很难,特别是因为进程可能依赖共享内存结构等。

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

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

清除OS页面caching: $ echo 1 > /proc/sys/vm/drop_caches

它自己的容器并没有使用太多的内存。 它们的devise非常轻巧。 把它想象成你的主机上被隔离的区域,只需要一点磁带就可以把你的容器和主机的其余部分分开。

内核必须包含cgroups,命名空间,接口,设备等,但这是微不足道的。

Docker本身也会引入less量的pipe理容器的开销,但这通常可以忽略不计(除非你将千个端口映射到容器中)。

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

如果要释放已使用的内存,则要么在容器中运行的进程需要具有该function,要么可以使用内存重新启动进程。