修改ECI实例的镜像并保持IP不变

在应用迭代过程中,因为解决bug或者增加功能特性而制作新的镜像后,您可能需要修改镜像,同时为了不影响业务,需要保持ECI实例的IP不变。本文介绍如何修改ECI实例的容器镜像,同时保持实例IP不变。

前提条件

已准备好要更新的镜像,且已将镜像上传到镜像仓库中。

操作步骤

下文以部署Nginx的ECI实例为例,介绍如何更新容器镜像,将容器镜像从nginx:1.14.2修改为nginx:1.15.10,并保持ECI实例的IP不变。

说明

以下操作步骤以OpenAPI为例进行介绍,如果您使用控制台进行操作,可在容器组页面找到目标ECI实例,单击对应操作列中的修改,即可在弹出页面配置新的容器镜像。

  1. 创建ECI实例。

    调用CreateContainerGroup接口创建一台ECI实例,采用的参数示例如下,更多信息,请参见CreateContainerGroup

    ContainerGroupName=test
    Container.1.Name=nginx
    Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2

    接口调用成功将返回ECI实例ID。

  2. 查询ECI实例信息。

    根据创建完成返回的ECI实例ID,调用DescribeContainerGroups接口查询实例信息。更多信息,请参见DescribeContainerGroups

    返回示例如下,当实例状态为Running时,表示实例创建成功,此时可以获取到ECI实例的IP(IntranetIp)。

    {
      "TotalCount": 1,
      "NextToken": "",
      "RequestId": "869A3D4B-EDC7-5716-BF53-2396028FAC5A",
      "ContainerGroups": [
        {
          "Cpu": 2,  
          "Memory": 4,
          "Containers": [
            {
              ......
              "Image": "registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2",
              ......
            }
          ],
          "IntranetIp": "172.16.52.122",
           ......
          "ContainerGroupId": "eci-bp1cug0yp63qnuag****",
          "RegionId": "cn-hangzhou"
        }
      ]
    }
  3. 更新容器镜像。

    调用UpdateContainerGroup即可更新实例,采用的参数示例如下,更多信息,请参见UpdateContainerGroup

    ContainerGroupId=eci-bp1cug0yp63qnuag****
    Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.15.10
  4. 再次查询ECI实例信息。

    根据更新完成返回的ECI实例ID,调用DescribeContainerGroups接口查询实例信息。

    返回示例如下,当实例状态为Running时,表示实例更新成功,此时,可以看到容器镜像已更新,且实例IP保持不变。

    {
      "TotalCount": 1,
      "NextToken": "",
      "RequestId": "0FB8256B-EEB4-511C-98B8-B442163B7352",
      "ContainerGroups": [
        {
          "Cpu": 2,  
          "Memory": 4,
          "Containers": [
            {
              ......
              "Image": "registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.15.10",
               ......
            }
          ],
          "IntranetIp": "172.16.52.122",
           ......
          "ContainerGroupId": "eci-bp1cug0yp63qnuag****",
          "RegionId": "cn-hangzhou"
        }
      ]
    }