Docker容器:删除不带根的缓存-其他选项?

Docker容器:删除不带根的缓存-其他选项?,docker,Docker,我正在docker容器中使用Impala/HDFS进行一些查询测试。为了比较不同比例因子的查询,我想删除缓存。通常情况下,这是很容易做到的 $ sync $ echo 1 > /proc/sys/vm/drop_caches 但是我没有主机系统的管理员权限。有没有其他方法可以从容器内部删除缓存?是否可以选择创建另一个大表并在此表上执行查询,以使其数据覆盖缓存?您不能从控制台内部执行此操作。容器中的根用户与实际根用户位于不同的命名空间中,并且只有后者可以访问/proc。您可以尝试将主机pr

我正在docker容器中使用Impala/HDFS进行一些查询测试。为了比较不同比例因子的查询,我想删除缓存。通常情况下,这是很容易做到的

$ sync
$ echo 1 > /proc/sys/vm/drop_caches

但是我没有主机系统的管理员权限。有没有其他方法可以从容器内部删除缓存?是否可以选择创建另一个大表并在此表上执行查询,以使其数据覆盖缓存?

您不能从控制台内部执行此操作。容器中的根用户与实际根用户位于不同的命名空间中,并且只有后者可以访问/proc。

您可以尝试将主机proc文件系统中的卷装载到容器中。这似乎对我有用:

$ docker run -ti --rm -v /proc/sys/vm/drop_caches:/drop_caches alpine
/ # free
             total       used       free     shared    buffers     cached
Mem:       2046644     808236    1238408        688       2248     118244
-/+ buffers/cache:     687744    1358900
Swap:      1048572      31448    1017124
/ # dd if=/dev/zero of=/dummy count=500 bs=1M
500+0 records in
500+0 records out
/ # free
             total       used       free     shared    buffers     cached
Mem:       2046644    1333892     712752        688       2268     630268
-/+ buffers/cache:     701356    1345288
Swap:      1048572      31448    1017124
/ # echo 3 > drop_caches
/ # free
             total       used       free     shared    buffers     cached
Mem:       2046644     790136    1256508        688        764     101552
-/+ buffers/cache:     687820    1358824
Swap:      1048572      31448    1017124
/ #

。。。但这是假设您控制容器的启动方式,这或多或少意味着您是管理员。

如何输入容器?通过:docker exec-it bash您是否尝试过docker exec-it-u0 bash?我可以使用-u0输入容器。但是如果我从上面执行后一个命令,我会得到:bash:/proc/sys/vm/drop\u caches:Read only file systemYes,我知道我不允许执行这个命令。但是,我还有什么其他选项可以覆盖缓存呢?