在Azure容器实例中更新Docker映像

Ego*_*kov 5 azure azure-container-instances

我在docker hub上的存储库中有一个映像。我基于docker hub上存储库中的映像创建了一个Azure容器实例。我更新了docker hub上存储库中的映像。如何将更改应用于容器?

小智 13

到目前为止我发现的方法是

  1. 使用 Azure 资源浏览器。

    • 查找容器组
    • 点击读/写
    • 点击编辑
    • 更改映像版本
    • imageRegistryCredentials使用私有注册表时输入密码。
    • 点击发布
  2. 这篇使用 Go SDK 的博客文章

  3. 使用 ARM 模板删除并重新创建组。使用这种方法您将丢失公共 IP。

在上述任何一种情况下,您都会有一些停机时间。

  • 我没有看到“单击读/写”按钮。被移除了吗? (2认同)

小智 11

也可以使用 Azure CLI。az container create使用相同的资源组名称和容器组名称以及新的映像标记再次运行。容器将更新为新图像。

  • 如果标签名称没有改变怎么办,即您使用的是 master 或“latest”的分支标签 (2认同)
  • 这似乎不起作用@anders。如果容器存在,您会收到此错误:“如果要更新容器组的操作系统类型、重启策略、网络配置文件、CPU、内存或 GPU 资源,则必须先将其删除,然后再创建新的” (2认同)

小智 6

除了提到的重新创建容器组之外,根据您的场景,您还可以部署一次指向:latestdocker 映像的容器组。

在我的场景中,我有一个每天运行一次的计划容器实例。每当它启动时,它都会:latest从 azure 容器注册表中提取带有标签的 docker 镜像。这避免了重新创建容器组。

  • 最实用的解决方案,也适用于持续交付。 (2认同)

Yor*_*rro 5

如果您遵循命名标签的做法,:latest无需重新创建容器

  1. 推送图片
  2. 重置容器实例
  3. 完毕!

这仅用于图像更新

  • 刚刚测试过,它只需要重新启动即可。我部署了一个引用 `:latest` 标签的容器。执行“az container restart”命令会导致映像被再次拉取并部署。 (2认同)