问题描述
我最近开始在 raspBerry pi 上使用 docker。我正在使用一组不断运行的 docker 容器,例如pihole、node red、mosquitto 等。我知道如果您必须重新启动树莓派,那么您应该先停止容器,然后在 pi 重新启动后重新启动它们。但是在其他一些教程中,我看到他们使用命令 sudo apt updates for raspBerry pi OS 检查更新并安装更新(如果可用)。我想知道以下内容:
在检查和安装 raspBerry pi 操作系统的更新之前,我应该停止容器吗?
在更新任何一个容器之前,您需要停止所有相互依赖的容器还是只停止需要更新的容器?
解决方法
在检查和安装 raspberry pi 操作系统的更新之前,我应该停止容器吗?
通常不会,主机上的更新不会对您的容器产生任何影响。例外情况是,如果您安装了 Docker 的更新,这可能会重新启动 Docker 守护程序。这可能会导致您的所有容器退出,但如果您为它们配置了重启策略,它们会自动恢复。当然,内核更新需要重启主机才能激活。
在更新任何一个容器之前,您需要停止所有相互依赖的容器还是只停止需要更新的容器?
这实际上取决于您设计应用程序的方式。
考虑一个与数据库对话的 Web 应用程序。如果您要移除数据库容器并使用更新的软件或配置创建一个新容器,具体取决于 Web 应用程序的编写方式:
-
它可能会崩溃,需要您手动重新启动。
-
如果您已为其配置了重启策略,Docker 可能会负责为您重启。
-
如果应用程序具有重新连接/重试逻辑,它可能只是等待直到数据库备份并可用。
-
应用程序本身可能需要更新才能正常运行。
了解软件堆栈中的依赖关系并确定如何最好地处理组件升级取决于您。