Docker上的状态应用程序

我正在学习Docker。 读一本Docker书,它会说“不推荐在Docker上运行有状态的应用程序(即数据库引擎)”。 我也从我的一个朋友那里听说他在Docker上使用MySQL没有任何问题。

在Docker上运行有状态的应用程序是不是很好的做法? Docker最适合的场景是什么?

状态docker应用程序的问题在于,它们默认将其状态(数据)存储在容器文件系统中。 一旦你更新你的软件版本,或者想移动到另一台机器,很难从那里检索数据。

你需要做的是将一个卷绑定到容器,并将任何数据存储在卷中。 这个卷可能在运行容器或其他地方的主机上。 这张照片解释了不同的设置。

如果使用以下命令运行容器:docker run -v hostFolder:/ containerfolder / containerfolder的任何更改都将保留在主文件夹中。 类似的事情可以用一个nfs驱动器来完成。 然后你可以在任何主机上运行你的应用程序,状态将被保存在nfs驱动器中。