镜像概述

目录

理解容器和镜像

容器和镜像是创建和管理容器化软件时需要理解的重要概念。镜像包含一组准备运行的软件,而容器是镜像的一个运行实例。不同版本通过同一镜像名称上的不同标签来表示。

镜像

Alauda Container Platform 中的容器基于 OCI 或 Docker 格式的容器镜像。镜像是一个二进制文件,包含运行单个容器所需的所有内容,以及描述其需求和能力的元数据。

你可以将其视为一种打包技术。容器只能访问镜像中定义的资源,除非在创建时授予了额外访问权限。通过在多个主机上的多个容器中部署相同的镜像,并在它们之间进行负载均衡,Alauda Container Platform 可以为打包在镜像中的服务提供冗余和横向扩展能力。

你可以直接使用 nerdctldocker CLI 来构建镜像,但 Alauda Container Platform 也提供了构建器镜像,帮助通过将你的代码或配置添加到现有镜像中来创建新镜像。

由于应用程序会随着时间发展,单个镜像名称实际上可以指代同一镜像的多个不同版本。每个不同的镜像通过其哈希值唯一标识,哈希值是一个长的十六进制数字,如 fd44297e2ddb050ec4f…,通常缩短为 12 个字符,如 fd44297e2ddb。

镜像仓库

镜像仓库是一个内容服务器,可以存储和提供容器镜像。例如:

仓库包含一个或多个镜像库,镜像库中包含一个或多个带标签的镜像。Alauda Container Platform 可以提供自己的镜像仓库,用于管理自定义容器镜像。

镜像库

镜像库是相关容器镜像及其标签的集合。例如,Alauda Container Platform 的 Jenkins 镜像位于以下镜像库中:

docker.io/alauda/jenkins-2-centos7

镜像标签

镜像标签是应用于镜像库中容器镜像的标签,用于区分镜像流中的特定镜像。通常,标签表示某种版本号。例如,这里的 :v3 .11.59-2 是标签:

docker.io/alauda/jenkins-2-centos7:v3.11.59-2

你可以为镜像添加额外的标签。例如,一个镜像可能被赋予 :v3 .11.59-2 和 :latest 两个标签。

镜像 ID

镜像 ID 是一个 SHA(安全哈希算法)代码,可用于拉取镜像。SHA 镜像 ID 不会改变。特定的 SHA 标识符始终引用完全相同的容器镜像内容。例如:

docker.io/alauda/jenkins-2-centos7@sha256:ab312bda324

容器

Alauda Container Platform 应用的基本单元称为容器。Linux 容器技术是一种轻量级机制,用于隔离运行的进程,使其仅限于与指定资源交互。容器一词定义为容器镜像的特定运行或暂停实例。

许多应用实例可以在单个主机上的容器中运行,彼此之间无法访问对方的进程、文件、网络等。通常,每个容器提供单一服务,通常称为微服务,例如 Web 服务器或数据库,但容器也可用于任意工作负载。

Linux 内核多年来一直在集成容器技术的能力。Docker 项目开发了一个方便的管理接口,用于管理主机上的 Linux 容器。最近,Open Container Initiative 制定了容器格式和容器运行时的开放标准。Alauda Container Platform 和 Kubernetes 增加了跨多主机安装编排 OCI 和 Docker 格式容器的能力。

虽然使用 Alauda Container Platform 时你不会直接与容器运行时交互,但理解其能力和术语对于理解它们在 Alauda Container Platform 中的作用以及你的应用如何在容器内运行非常重要。