【问题标题】:Can I push application updates to docker image without rebuilding?我可以在不重建的情况下将应用程序更新推送到 docker 映像吗?
【发布时间】:2016-06-16 10:52:46
【问题描述】:

假设我在生产环境中有包含 web 服务器、数据库服务器和 web 应用程序的 docker 映像。

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

【问题讨论】:

    标签: deployment docker


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢你提到微服务,但是如果我想在docker里面使用像chef这样的配置管理系统,那会是反模式吗?
    • 很有可能。 Chef 会将更新部署到不可变的环境,当您停止/rm/运行新容器时,它为在容器内部署应用程序所做的大多数更改都会丢失。您可以使用 Chef 来启动容器,但还有更多自定义工具更适合此任务,例如 docker-compose 甚至 Kubernetes。
    猜你喜欢
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 2014-09-15
    • 1970-01-01
    • 2012-03-20
    相关资源
    最近更新 更多