我可以在不重建的情况下将应用程序更新推送到 docker 镜像吗?

Sha*_*tef 0 deployment docker

假设我在生产中拥有带有 Web 服务器、数据库服务器和 Web 应用程序的 docker 映像。

我可以在不破坏数据库服务器的情况下将应用程序更新推送到生产容器吗??

BMi*_*tch 5

我建议阅读微服务架构,因为您似乎在犯将 Docker 映像等同于轻量级 VM 映像的逻辑谬误。我使用的逻辑是虚拟机将操作系统与主机隔离,而容器将进程及其子进程与主机隔离。因此,您不希望 Web 服务器、数据库服务器和 Web 应用程序位于同一个图像上,它们将是 2-3 个单独的图像(取决于您的应用程序的运行方式)。

图像应该被认为是不可变的,你对容器所做的任何更改都应该在完全重启时丢失。数据位于图像之外的卷上,并附加到容器上。如果您通过数据卷推送更新,那么该更改会立即生效而无需重新启动,但如果您将应用程序移至卷中,您也会失去拥有版本化不可变图像的许多优势。您的容器是否需要一起重新启动,或者您是否可以拉取和替换单个容器,或者您是否可以在停止旧版本之前启动新版本以提供 100% 的正常运行时间,这取决于您的架构设计。