我正在学习Docker。读了一本Docker的书,它说“不推荐在Docker上运行有状态的应用程序(即数据库引擎)”。我也从我的一个朋友那里听说,他在Docker上使用MySQL没有问题。
在Docker上运行有状态应用程序是一种好的做法吗?Docker最适合的场景是什么?
发布于 2017-03-24 11:19:01
statefull docker应用程序的问题在于,默认情况下,它们将其状态(数据)存储在容器文件系统中。一旦你更新了你的软件版本,或者想要转移到另一台机器上,就很难从那里检索数据了。
您需要做的是将一个卷绑定到容器,并将所有数据存储在该卷中。这个卷可能在运行容器的主机上,也可能在其他地方。此picture解释了不同的设置。
如果你用docker run containerfolder:/ /containerfolder来运行你的容器,那么对容器的任何修改都会保存在主机文件夹中。使用nfs驱动器也可以做类似的事情。然后,您可以在任何主机上运行您的应用程序,状态将保存在nfs驱动器中。
https://stackoverflow.com/questions/42997550
复制