假设我在生产中有web服务器,数据库服务器和Web应用程序的docker镜像。
我可以将应用程序更新推送到生产容器,而不会破坏数据库服务器吗?
答案 0 :(得分:4)
我建议您阅读微服务架构,因为您似乎正在制定将Docker镜像等同于轻量级VM映像的逻辑谬误。我使用的逻辑是虚拟机将操作系统与主机隔离,而容器隔离了进程及其主机的子进程。因此,您不希望在同一图像上使用Web服务器,数据库服务器和Web应用程序,这些图像将是2-3个单独的图像(取决于您的应用程序的运行方式)。
图像应该被认为是不可变的,您对容器所做的任何更改都应该在完全重启时丢失。数据位于图像外部的卷上,并附加到容器。如果您通过数据卷推送更新,那么该更改将立即生效,无需重新启动,但如果您将应用程序移动到卷中,则还会失去版本化不可变图像的许多优点。您的容器是否需要全部重新启动,或者是否可以提取和更换单个容器,或者如果您可以在拆除旧版本之前启动新版本以提供100%的正常运行时间,则取决于您的体系结构的设计。