假设有一个使用固定内存配置创建的Docker容器。我可以动态释放一些内存吗?因为我们可以使用LXC中的简单命令lxc-cgroup -n name memory.limit_in_bytes 256M
来执行此操作。
答案 0 :(得分:2)
如果没有:
,则无法释放容器内存这是因为Docker容器被表示为主机系统上的进程。因此,您需要释放与容器进程关联的内存。据我所知,这很困难,特别是因为进程可能依赖于共享内存结构等。
如果您确实需要释放内存,可以使用以下命令来帮助清除主机内存,假设您使用的是Linux:
将内存缓冲区中的数据刷新到磁盘:
$ sync
清除操作系统页面缓存:
$ echo 1 > /proc/sys/vm/drop_caches
答案 1 :(得分:1)
它自己的容器并没有使用太多内存。它们的设计重量很轻。可以把它想象成主机上的围栏区域,只需要一些磁带就可以将容器与主机的其余部分分开。
内核必须包含cgroup,命名空间,接口,设备等,但这可以忽略不计。
Docker本身也会为它的容器管理带来少量开销,但这通常可以忽略不计(除非你把一千个端口映射到容器中)。
内存的主要用途是在容器中运行的进程。如果将容器设置为上限,容器将不会使用256MB,这将只是分配开始失败之前的上限。
如果要释放已用内存,则要在容器中运行的进程需要具备该功能,或者可以使用内存重新启动进程。