@
skiy 所以说这根本就是两回事。“不可变操作系统”不代表不给 root ,同时不给 root 也不代表这个系统是“不可变操作系统”。
你是完全把“不可变操作系统”按字面意义理解了。不是只要无法修改就是“不可变操作系统”。否则按照你的定义,岂不是所有操作系统不给 root 就都是“不可变操作系统”了?
“不可变操作系统“的特点之一就是操作系统本身像一个镜像一样,能在所有机器上的状态能保持一致,但它也允许你自己修改,但这样的修改也是处于可以预测、可以复现的状态。
用 docker 做比喻的话,就是我构建好这个 app 的镜像之后,其他所有客户端拉我这个 app 的镜像都会是一样的状态:一样的依赖、一样的版本。不会出现“在我的机器上跑得起来,而在其他人的机器上因为依赖问题跑不起来”这种现象。
如果是通过传统包管理器安装 app ,通过复杂的依赖处理之后,很有可能就安装了不同版本的依赖,导致了 app 在我这里跑起来了,在其他人那里没跑起来。
同样的,docker 也允许你基于别人的镜像再构建一个新的镜像,不是说就完全不让你修改,但这样的修改完全是可以预测的可以复现的。但传统的包管理器却没办法获得类似的效果,传统包管理无法管理到整个系统的所有状态,经过一段时间使用,不同的机器会进入到不同的状态,而这种状态是无法预测和复现的。