使用 docker 个容器 运行 更新 raspberry pi

updating raspberry pi with docker containers running

我最近开始在 raspberry pi 上使用 docker。我正在使用一组 docker 容器,这些容器经常 运行 例如pihole、node red、mosquitto 等。我知道如果你必须重新启动 raspberry pi 那么你应该先停止容器,然后在 pi 重新启动后重新启动它们。但在其他一些教程中,我看到他们使用 raspberry pi OS 命令 sudo apt updates 检查更新并安装更新(如果可用)。我想知道以下内容:

我应该在检查和安装 raspberry pi OS 的更新之前停止容器吗?

您是需要在更新任何一个容器之前停止所有相互依赖的容器,还是只停止需要更新的容器?

Should I stop the containers before checking and installing updates for the raspberry pi OS?

一般来说,不会,主机上的更新不会对您的容器产生任何影响。例外情况是,如果您安装 Docker 的更新,这可能会重新启动 Docker 守护程序。这可能会导致所有容器退出,但如果您为它们配置了重启策略,它们会自动恢复。当然,内核更新在生效之前需要重新启动主机。

do you need to stop all the containers that depend on each other before updating any one of the container or just stop the container that needs to be updated?

这实际上取决于您如何设计应用程序。

考虑一个与数据库对话的 Web 应用程序。如果您要删除数据库容器并使用更新的软件或配置创建一个新容器,具体取决于 Web 应用程序的编写方式:

  • 它可能会崩溃,需要您手动重启它。

  • 如果您配置了重启策略,Docker 可能会为您重启它。

  • 如果应用程序具有 reconnect/retry 逻辑,它可能只是等待数据库备份并可用。

  • 应用程序本身可能需要更新才能 运行 正确。

您需要了解软件堆栈中的依赖关系并确定如何最好地处理组件升级。