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

致谢

最后,我想感谢Matthew Iverson,他是InfluxDB客户,也是我们社区InfluxAces之一,他让我们知道,尽管这并没有直接影响他,但这个标签更新仍然在我们开源版本的用户中引起了困惑。我还想感谢我们客户成功团队的Srajan Bhagat,他在得知这个消息后立即将它转达给了我。

我尤其想感谢InfluxData产品与工程团队,特别是Phillip Steinbachs、Daniel Moran、Russ Savage、Jonathan Sternberg和Ryan Betts,他们在我提到我们的开源用户遇到问题时,立即放下手头的工作,与我通电话帮助我们尽快找到解决方案。他们确保所有用户都能获得最佳体验的承诺,是InfluxData和InfluxDB社区之所以如此优秀的原因。

一如既往,您可以通过加入我们的Slack访问我们的论坛直接与我们联系。

资源链接