codehz
2017-08-02 09:58:02 +08:00
安卓默认阉割了命名空间功能,OverlayFS 等等(这些功能都是 docker 启动的必备之物),不过可以修改编译配置来重新启用。
不过关键问题在于,即使用上了 docker (还有很多兼容问题难以解决),也是只能跑终端应用——因为安卓系统服务采用的 binder 和命名空间是不兼容的。。。在 docker 中启动的 zygote 并不能正确的显示界面——直接段错误退出了,因此,如果要实现 Docker for Android,势必要给内核打补丁,修改 Binder 的实现,以期和命名空间机制相互兼容。(这就非常困难了)
不过考虑到大多数人的需求,我觉得只需要隔离文件就可以了——仅仅用 FileSystem Namespace 做的话,应该就差不多了,每个 userid 建立一个命名空间(只在首个进程启动时建立,随后启动的进程直接复用原有的命名空间)然后每个命名空间挂载不同的 sdcard。。删除用户时删除对应的文件夹