首页 > 解决方案 > 生产关键数据和非生产非关键数据应存储在哪里?

问题描述

我在一次采访中被问到这个问题,我不确定正确的答案,所以我想听听你的建议。

有人问我是否应该在 docker 实例内部或外部保留生产关键数据?我的选择是什么以及这样做的原因。

如果我们有非生产非关键数据,您的答案会有所不同吗?

用理由支持你的答案。

标签: dockerdocker-volume

解决方案


大多数数据应该在容器和容器镜像的外部进行管理。我倾向于将限制在容器中的数据视为临时(中间|可丢弃)数据。否则,如果它被捕获但对我的业务并不重要,为什么要创建它?

“容器”这个名称具有误导性。容器不像虚拟机那样在虚拟机之间存在强大的屏障(隔离)。当您在单个主机上运行多个容器时,您可以枚举它们ps aux在主机上使用的所有进程。

有很好的论据来保持进程和数据之间的分离,并且在单个容器中同时运行这使得保持这种分离变得更具挑战性。

与进程不同,容器层中的文件更加隔离。尽管这些层在主机操作系统上显示为文件,但您不能简单地ls从主机操作系统中获取容器层的文件。这使得访问容器中的数据更加复杂。在另一个文件系统上有效地运行一个文件系统也会带来性能损失。

虽然在机器(即docker pushdocker pull)之间移动容器映像很常见且微不足道,但在机器之间移动容器却不太容易。这通常不是移动进程的问题,因为这些(配置除外)是无状态的并且易于移动和重新创建,但是您的数据状态并且您希望能够轻松移动这些数据(用于备份,恢复)并且越来越多地移动到在对其执行处理的动态节点池中移动。

不太重要但并非不重要的是,rm -rf *通过移除容器(docker container rm ...


推荐阅读