Docker 容器内的应用程序更新?

Docker 容器内的应用程序更新?

通常在服务器上配置安全相关补丁的自动更新。因此,如果我运行 MySQL 5.5 并且出现了新的安全补丁,Ubuntu Server 将应用升级并重新启动 MySQL,以自动方式保护我。显然,这可以禁用,但这对于我们这些有点懒的人来说很有帮助;)

Docker 容器内部是否存在这样的概念?如果我在 Docker 容器中运行 MySQL,我是否需要不断停止容器,在其中打开 shell,然后更新和升级 MySQL?

答案1

我不同意接受的答案。首先,您应该在设计容器时考虑到状态分离(在 MySQL 的情况下,这意味着至少/var/lib/mysql有其自己的状态)体积)。其次,你应该确定升级策略;最先进的方法是为每组 apt 软件包升级创建版本化映像,并在将数据卷从正在运行的容器交换到新容器之前对其进行测试。如果您使用类似的东西,这可能包括停机时间或根本没有停机时间臀部疼痛

这种设置虽然初始设置成本较高,但与拥有大规模容器的公司所使用的相同,并且随着时间的推移维护起来会更便宜。

此外,软件包升级最终可能会破坏正在运行的容器,因此将它们应用于正在运行的容器并不是最佳实践 - 因为它不是运行过时的软件。

答案2

长话短说: 如果你不自己构建它,它就不会发生。

执行此操作的有效方法是简单地CMDDockerfile.在此文件中,apt-get update && apt-get upgrade -qqy在启动您正在运行的任何内容之前运行。

然后,您有几种方法可以确保更新到达容器:

  1. 在主机操作系统中定义一个 cron 作业以按计划重新启动容器,从而使其按计划更新和升级。
  2. 订阅软件的安全更新,然后在更新受影响的软件包时重新启动容器。

优化和自动化并不是最容易的事情,但它是可能的。

相关内容