核心概念
更新时间:2019-07-09
容器组
容器组的概念类似于Kubernetes中的Pod,是一组由用户定义的容器集合。容器组中的容器将被调度到同一台宿主机中,共享网络和存储资源。
容器组的生命周期由其中的所有容器决定,容器组可能出现以下几种状态之一:
- 挂起(pending):创建容器组的请求已经发起,但有一个或者多个容器镜像尚未创建。挂起状态通常包括包括调度 Pod 、通过网络下载镜像和启动容器的时间。
- 运行中(Running):容器组中所有容器都已经被创建完成,且至少有一个容器正在运行,或者正处于启动或重启状态。
- 成功(Succeeded):容器组中的所有容器都被成功终止,并且不会再重启。
- 失败(Failed):容器组中的所有容器都已终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或者被系统终止。
- 未知(Unknown):因为某些原因无法取得容器组的状态。
用户可以为容器组指定重启策略,当容器组中的容器终止时,容器组将根据重启策略判断是否重新启动该容器。重启策略包括:
- 总是重启:无论容器以什么状态终止,容器组都会重新启动该容器。
- 失败重启:只有容器因为失败而终止,即以非0状态退出或者被系统终止,容器组会重新启动该容器。
- 从不重启:无论容器以什么状态终止,容器组都不会重新启动容器。
网络
容器组中所有的容器共享相同的IP地址和端口号。用户可以在创建容器组时,为不同的容器指定使用的端口和协议。 容器组存在于用户的VPC中,自动获得VPC内的内网IP。在创建容器组时需要用户选择容器组所在的VPC和子网,以及网络安全组。 容器组也可以挂载EIP,获得访问公网的能力。EIP可以在容器组被创建出来之后挂载,也可以选择不为容器组挂载EIP,通过VPC中的NAT网关进行公网访问。
存储
容器组通过挂载存储卷获得存储能力,组内容器共享容器组中的所有存储卷。目前BCI容器组支持3种存储卷类型:
- NFS:NFS数据卷将网络文件系统挂载到容器组中,提供持久化存储,Server地址需要与容器组在相同VPC或者公网可访问,建议搭配百度云文件服务CFS使用。
- EmptyDir:EmptyDir提供一个容器组内所有容器均能访问的共享路径,当容器组被删除后,EmptyDir上的数据也会被一并删除,适用于容器组运行时的临时数据。
- ConfigFile:ConfigFile用于向容器组中传递配置信息,挂载配置文件后,容器可以直接通过对应路径读取文件内容。
镜像
Docker 镜像是容器应用打包的标准格式,用户需要在创建容器组时为组内每个容器指定镜像。镜像来源可以是DockerHub、百度智能云公共镜像或者用户上传到百度智能云镜像仓库中的自定义镜像。Docker镜像通过镜像地址和版本(tag)唯一标识。
如果在创建容器组时使用了私有镜像,那么需要用户提供镜像仓库对应的用户名和密码,否则创建容器组时将会拉取镜像失败。