我正在学习Docker。阅读Docker书时,它说“不建议在Docker上运行有状态应用程序(即数据库引擎)”。我也从我的一个朋友那里听说他在Docker上使用MySQL没有任何问题。
在Docker上运行有状态应用程序是一种好习惯吗? Docker最适合的场景是什么?
答案 0 :(得分:4)
statefull docker aplications的问题在于它们默认将它们的状态(数据)存储在容器文件系统中。更新软件版本或想要移动到另一台机器后,很难从那里检索数据。
您需要做的是将卷绑定到容器并将任何数据存储在卷中。此卷可能位于运行容器的主机上或其他位置。这个picture解释了不同的设置。
如果您使用以下命令运行容器:docker run -v hostFolder:/ containerfolder对/ containerfolder的任何更改都将保留在主机文件夹中。使用nfs驱动器可以完成类似的操作。然后,您可以在任何主机上运行应用程序,状态将保存在nfs驱动器中。