解决PivotRoot系统调用失败
pivot_root 介绍
当我们fork新的进程,子进程会使用父进程的文件系统。
但如果我们想要把子进程的 /
文件系统修改成 /var/run/wwcdocker/mnt/balabala
怎么办呢?
这时候就要使用 [pivot_root](https://linux.die.net/man/2/pivot_root)
了
int pivot_root(const char *new_root, const char *put_old);
它的作用是将进程的 /
更改为 new_root
,原 /
存放到 put_old
文件夹下。
遇到的问题
我想使用 PivotRoot
来修改容器进程的根文件系统路径。
但每次进行系统调用,总会出 Invalid arguments
错误
Docker runC 下有这么一段话
1 | // Make parent mount PRIVATE if it was shared. It is needed for two |
我们需要将父 root 修改为 PRIVATE
更多请参考
https://github.com/iamwwc/wwcdocker/issues/3
我在这个 issue 上有详细介绍