我可以将应用程序更新推送到docker图像而不重build?

假设我有生产中的Web服务器,数据库服务器和Web应用程序的docker图像。

我可以将应用程序更新推送到生产容器,而不破坏数据库服务器?

我build议您阅读微服务架构,因为您似乎在将Docker映像等同于轻量级VM映像的逻辑谬误。 我使用的逻辑是,虚拟机将操作系统从主机中隔离出来,而容器将进程隔离起来,并且它是来自主机的subprocess。 因此,您不希望Web服务器,数据库服务器和Web应用程序在同一个映像上,这些将是2-3个独立的映像(取决于您的应用程序的运行方式)。

图像应该被认为是不可变的,你对容器做出的任何改变都应该在完全重启时丢失。 数据位于图像外部的卷上,并附加到容器上。 如果您通过数据卷推送更新,那么此更改将立即生效而不会重新启动,但是如果将应用程序移动到卷中,则还会失去对不可变版本进行版本化的许多优势。 无论您的容器是否需要全部重新启动,或者您是否可以拆卸和更换单个容器,或者如果您在启动旧版本之前启用新版本,以便100%正常运行,则取决于您的架构devise。