InfluxDB 最新标签已在 Docker Hub 更新

导航至

最新的 InfluxDB OSS(版本 2.0.4)已在 Docker Hub 上正式发布!虽然这将为 InfluxDB 的新老用户提供平滑的升级路径,但我们发现,由于某些用户将其部署配置为始终使用这些镜像的 :latest 标签,导致他们意外升级到了新镜像。

为了尽力确保最佳体验,我们在此记录了导致这种情况发生的原因、如何避免这种情况,以及如果您发现自己处于类似情况时该怎么做。

发生了什么

在过去的几周里,我们一直与 Docker Hub 合作,将其官方 InfluxDB 镜像更新到新的 InfluxDB OSS 2.0 版本。该过程的最后一步是更新 :latest 标签引用,使其指向新的 InfluxDB 2.0.4 版本的容器镜像。Docker Hub 在几天前接受了该更新,并在当天晚上晚些时候上线。从那时起,任何拉取镜像副本的人,无论是显式使用 :latest 标签还是根本不使用标签,都开始使用 InfluxDB 2.0.4 镜像。

这让一些用户感到惊讶,他们正在更新最初使用 InfluxDB 1.8 版本容器部署的环境,现在却发现自己在运行 InfluxDB 2.0——尤其因为他们来自 InfluxDB 1.8.x 的数据文件与 InfluxDB 2.0 代码库不兼容。

如果您遇到了这种情况,请不要担心,您的数据是安全的!InfluxDB OSS 内置了迁移工具,可以将您的数据文件更新为新格式,但它不会自动运行。根据您的设置,您可以选择返回到 InfluxDB OSS 1.8 版本的 Docker 镜像,或者运行命令来升级您的数据以使用最新版本。有关 InfluxDB 1.x 和 InfluxDB 2.x 之间主要差异的列表,请查看 我们的文档

下一节将更详细地解释为什么会发生这种情况,以及我们接下来将采取什么措施来帮助我们的用户避免这种情况。如果您只想修复您的设置并恢复工作,请向下滚动到“如何修复”部分

为什么会发生这种情况

:latest 标签是 Docker Hub 提供的一种便利,它可以轻松拉取镜像的最新版本,而无需知道该版本是什么。它对于自动化 CI 等场景非常有用,在这些场景中,您始终希望使用软件的最新版本,并且对于只想尽快且尽可能轻松地开始运行软件的开发人员也很有用。

作为未指定标签时的默认值,它还允许更短的指令,例如 docker run influxdb,我们可以将其放在文档中,而不必每次发布版本更改时都进行更新。

但是,它不适用于部署,因为它引用的版本将不断变化。官方 Kubernetes 说明明确警告不要使用它

“在生产环境中部署容器时,应避免使用 :latest 标签,因为这样更难跟踪正在运行的镜像版本,并且更难以正确回滚。” https://kubernetes.ac.cn/docs/concepts/configuration/overview/#container-images

即使您只是部署个人或业余项目,也应仅在开发和测试环境中使用 :latest,并在您使其按您想要的方式工作后切换到显式发布标签。

未来展望

InfluxDB 的 :latest 标签目前指向 2.0.4 发布镜像。当我们发布 InfluxDB OSS 2.x 及更高版本的新版本时,此标签将更新为指向这些新版本。这就是 Docker Hub 期望 :latest 标签的使用方式,也是用户期望的行为。

我们还将继续发布 1.x 代码库的 Docker 镜像,并将为该代码库的每个新版本发布新镜像。但是,这些镜像将永远不会再有指向它们的 :latest 标签,因此每次您想要运行或更新它们时,都需要提供特定的版本标签。 我们已经确定了几个可以改进文档的地方,无论是在我们的网站还是在 Docker Hub 上,以便更明确地说明何时应使用 :latest 标签,以及何时应改为提供特定版本。我们还将添加更多关于如何将您的 Docker 环境从 InfluxDB 1.8 镜像升级到 InfluxDB 2.0 镜像的文档。

如何修复

如果您的 InfluxDB OSS 1.8 部署中有现有数据,您可以选择升级它以使用最新的 InfluxDB OSS 2.0 版本,或者将您的部署回滚到使用 InfluxDB OSS 1.8 版本。

升级到 InfluxDB OSS 2.0

如果您想继续使用 InfluxDB OSS 2.0,您可以使用新版本的 InfluxDB 镜像对现有数据进行就地升级。为此,您需要运行容器并设置一些额外的环境变量,这些变量将告诉 InfluxDB OSS 2.0 您想要升级您的数据和配置文件。我们已更新 InfluxDB Docker Hub 页面上的说明,以指导您完成此过程。

回滚到 InfluxDB OSS 1.8

如果您只想将一切恢复到此事件发生之前的状态,您只需告诉 docker 显式使用 1.8 标签即可。

在 Docker CLI 中,您可以使用以下命令执行此操作:

docker run --rm influxdb:1.8

如果您正在使用 docker-compose,请将 1.8 标签添加到您的 docker-compose.yml 文件中的 image: 参数

image: influxdb:1.8

同样,如果您正在使用 Kubernetes,请更新您的 pod 规范以使用

image: influxdb:1.8

致谢

最后,我要感谢 InfluxDB 客户 Matthew Iverson,他是我们社区 InfluxAces 的成员之一,他告知我们,即使此标签更新没有直接影响到他,但也给我们的开源版本的用户造成了困惑。我还要感谢我们客户成功团队的 Srajan Bhagat,他在听到 Matthew 的消息后立即将其转达给我。

我还要特别感谢 InfluxData 产品和工程团队,特别是 Phillip Steinbachs、Daniel Moran、Russ Savage、Jonathan Sternberg 和 Ryan Betts,他们在得知我们的开源用户遇到问题后,都立即放下手头的工作,与我进行通话,以帮助找到解决方案。他们致力于确保我们所有用户获得最佳体验,这正是 InfluxData 和 InfluxDB 社区如此伟大的原因。

与往常一样,您可以通过加入我们的 Slack访问我们的论坛,直接在 InfluxData 社区中与我们联系。

资源链接