Containers and Images——容器和镜像
容器
OpenShift Container Platform应用程序的基本单位称为容器。Linux容器技术是用于隔离正在运行的进程的轻量级机制,它们仅限于与指定的资源进行交互。
许多应用程序实例可以在单个主机上的多个容器中运行,而不会看到彼此的进程、文件、网络等。通常每个容器提供单一服务(常称为“微服务”),例如Web服务器或数据库,尽管容器可用于任意工作负载量。
Linux内核多年来一直在集成容器技术的功能。最近Docker项目为主机上的Linux容器开发了一个方便的管理界面。OpenShift Container Platform和Kubernetes增加了在多主机安装中编排容器的能力。
虽然在使用OpenShift Container Platform时,您不直接与Docker CLI或service交互,但了解其功能和术语对于了解OpenShift Container Platform中的角色以及应用程序在容器内的作用是非常重要的。docker RPM 可作为RHEL 7、CentOS和Fedora的一部分,所以你可以在非OpenShift Container Platform的地方进行实验,请参考Red Hat Systems上的Docker格式化容器镜像入门指南。
初始化容器
Pod能除了可以运行容器,还可以初始化容器设置。Pod允许您重新组织安装脚本和绑定代码。初始化容器与常规容器不同之处在于它总是运行到完成。每个初始化容器必须在下一个启动之前成功完成。
有关更多信息,请参考2.2.2-Pods和Services中的信息。
镜像
OpenShift Container Platform中的容器是基于Docker格式的容器镜像。镜像是包含运行单个容器的所有要求的二进制文件,以及描述其需求和功能的元数据。
您可以将镜像视为一种打包技术。除非在创建容器时给予容器附加访问权限,容器只能访问镜像中定义的资源。OpenShift Container Platform可以通过跨多个主机在多个容器中部署相同的映像,实现负载平衡;OpenShift Container Platform可以为打包成镜像的service提供冗余和水平扩展。
您可以直接使用Docker CLI构建镜像,但OpenShift容器平台还提供构建器镜像的方法:通过将代码或配置添加到已有的镜像中来创建你所需要的新镜像。
因为应用程序随着时间的推移而发展,所以一个镜像名称实际上可以包含许多不同版本的“相同”镜像。每个不同的图像都是唯一的,通过hash值进行区分(例如长十六进制数fd44297e2ddb050ec4f…),通常缩短为12个字符(例如fd44297e2ddb)。
镜像版本的标签
Docker服务除了采用版本号,还使用标签(如v1,v2.1,GA,或默认的latest),你可能会看到相同的镜像被标记为centos(暗示latest版本),centos:centos7,或fd44297e2ddb。
不要将
latest标签用于任何官方的OpenShift镜像。这些是镜像都是由openshift3/ 开头的。latest可以参考一些版本,如3.4或3.5。
如何标记镜像指示更新策略。使用以下方法确定您选择的OpenShift Container Platform镜像版本:
VX.Y
vX.Y标签指向XYZ- <number>。例如,如果registry-console镜像更新到v3.4,则它指向最新的3.4.Z- <number>标签,例如3.4.1-8。
X.Y.Z
类似于上面的vX.Y示例,X.Y.Z标签指向最新的XYZ- <number>。例如,3.4.1将指向3.4.1-8
X.Y.Z-<number>
标签是唯一的且不会改变的。使用此标签时,在有新的镜像被上传时,镜像也不会被更新,例如,3.4.1-8将始终指向3.4.1-8,即使镜像被更新。
镜像仓库
容器仓库是用于存储和检索基于Docker格式的容器镜像的服务。一个大的仓库包含一个或多个小的镜像仓库。每个小的镜像仓库包含一个或多个标记的镜像。Docker提供了自己的镜像仓库——Docker Hub,您还可以使用私人或第三方镜像仓库,红帽的是registry.access.redhat.com。OpenShift Container Platform还可以提供自己的内部镜像仓库来管理自定义容器镜像。
容器,镜像和镜像仓库之间的关系如下图所示:
不要将