Docker:状态管理、工作流与生态系统全解析
1. 外部化状态
当需要存储状态时,如果 Docker 最适合无状态应用,那么该如何存储状态呢?
1.1 配置传递
配置通常通过环境变量传递,Docker 原生支持环境变量,它们存储在构成容器配置的元数据中。这意味着重启容器时,每次都会将相同的配置传递给应用程序。而且在容器运行时,其配置易于观察,便于调试,但在环境变量中暴露机密信息存在安全问题。此外,也可以将应用程序配置存储在外部数据存储中,如 Consul 或 PostgreSQL。
1.2 文件存储挑战
数据库常用于扩展应用程序存储状态,Docker 不会干扰容器化应用程序的这一操作。然而,需要存储文件的应用程序面临一些挑战。将数据存储到容器的文件系统中性能不佳,会受到空间限制,并且在重新创建容器时不会保留状态。如果在不利用容器外部存储的情况下重新部署有状态服务,将丢失所有状态。因此,在将需要存储文件系统状态的应用程序放入 Docker 之前,应仔细考虑。
1.3 解决方案
如果决定在这些情况下使用 Linux 容器,最好设计一种解决方案,将状态存储在集中位置,无论容器运行在哪个主机上都可以访问。例如,可以使用 Amazon Simple Storage Service (Amazon S3)、OpenStack Swift 或本地块存储,甚至在容器内挂载 EBS 卷或 iSCSI 磁盘。
1.4 不建议的做法
虽然可以将状态外部化到主机的本地文件系统,但社区通常不鼓励这样做,应将其视为高级用例。因为这会在容器和主机之间引入依赖关系,干扰 Do
超级会员免费看
订阅专栏 解锁全文
1383

被折叠的 条评论
为什么被折叠?



