阿里云弹性容器实例(Elastic Container Instance)中的核心概念是容器组(Container Group)。本文即将为您介绍容器组以及ECI相关的其他概念。

容器组(Container Group)

容器组是一组可以被调度到同一台宿主机上的容器集合。这些容器共同构成了容器组的生命周期并共享容器组的网络和存储资源。容器组的概念与Kubernetes中Pod概念类似。

在部署过程中需要为容器组分配资源。ECI最小可以分配的资源为0.25 vCPU和0.5 GB内存。容器组中的单一容器可以使用的资源不能超过容器组的限制。例如:一个1 vcpu资源的容器组中可以包含2个分别使用0.5 vcpu的容器。

Container Group 状态

  • 创建中(Scheduling):容器组创建中。
  • 启动中(Pending):容器组中有一个或者多个容器还在启动中,并且没有处于运行中状态的容器。
  • 运行中(Running):容器组中所有的容器都已被创建,并且至少有一个容器正在运行,或者正处于重启状态。
  • 重启中(Restarting):容器组正在重启。
  • 更新中(Updating):容器组正在更新中。
  • 运行成功(Succeeded):容器组中所有容器都被成功终止,并且不会再重启。
  • 运行失败(Failed):容器组中的所有容器都已终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或者被系统终止。
  • 创建失败(ScheduleFailed):容器组创建失败,24小时后该实例会被系统自动删除,不会收取任何费用。
  • 启动失败(StartingFailed):容器组启动失败,Pending状态持续超过4个小时后,该实例会自动进入启动失败状态并清理计算资源,不会收取任何费用。
  • 等待自动清理(WatingForDel):容器组创建失败1个小时后该实例会自动进入等待自动清理状态,不会收取任何费用。

注意: 容器组的重启策略仅决定组内容器的逻辑行为,容器组不会被自动重启。

Container 状态

  • 启动中(Wating):容器正在等待创建,还未处于运行状态。一般有InitContainer在运行的时候,应用容器会处于Waiting状态,直到InitContainer退出。
  • 运行中(Running):容器已经创建,并且正在运行。
  • 运行终止(Terminated):容器终止退出,包括成功终止与失败终止。

网络(Network)

容器组内的容器共享相同的IP地址和端口号。目前ECI支持什么是专有网络什么是弹性公网IP(EIP)。当您在创建ECI时,需要指定VPC相关信息以便容器组的网络通信正常。如果您希望在ECI中运行的业务能够对外被外部网络访问,有两种方式:

  1. 通过先行创建相关的EIP并与NAT网关绑定。
  2. 使用EIP。
说明

标签(Tags)

Tags的实质是附着在容器组上的一系列Key/Value键值对,标签需要在创建容器组时赋予,每一个容器组可以拥有最多10个标签,其中key值必须唯一。Tags概念与Kubernetes中的Labels概念类似。

镜像(Image)

Docker镜像是容器应用打包的标准格式,在部署容器化应用时可以指定镜像,镜像可以来自于Docker Hub,阿里云镜像服务,或者您的私有Registry。镜像ID可以由镜像所在仓库URI和镜像Tag(缺省为latest)唯一确认。

数据卷(Volume)

您可以将外部数据卷挂载到指定的容器组,数据卷的生命周期和作用范围是一个容器组。每个容器组中声明的数据卷由容器组中的所有容器共享。

Kubernetes

更多Kubernetes概念,可以参考 Kubernetes 官方文档以及容器服务Kubernetes版与原生Kubernetes的与原生Kubernetes名词对照