3 镜像命名规则及其格式
3.1 镜像名称格式
我们日常使用的镜像名称的通用格式为:DOCKER_REGISTRY/repo/name:tag,各个字段具体含义如下:
DOCKER_REGISTRY:企业统一的Docker Registry地址;
repo:镜像仓库,用来管理某一类镜像;
name:某个镜像的具体名称,一般的命名规则为:系统名称+系统版本+服务名+服务版本(如果公司约定了主要使用的系统名称和版本,则可以省略系统名称+系统版本部分,直接使用服务名作为镜像的名称)。例如:centos7.6-nginx-1.47。
tag:某个镜像具体的标签。例如:2.0。
需要注意的是:镜像的名称需要限制为[a-z0-9],其中可以出现的符号为[-._],不能出现中文以及中文符号,包括镜像名称中的: 也必须是英文的冒号,不然创建容器的时候会失败。
3.2 基础镜像命名规则
上文我们说到,我们采用一个独立的仓库来管理企业的基础镜像,例如使用public仓库来管理所有的基础镜像,下面我们来约定基础镜像的命名规则:DOCKER_REGISTRY/repo/name:tag;
repo:统一用public仓库来进行管理;
name:描述该image中所提供的软件,各软件间通过“-”连接;
tag:依次顺序描述该image中所提供的软件的版本,各版本间通过“-”连接。
注意点:
所有Base image除了尽量通过name和tag描述该image中所有的软件及其版本信息,还需要通过添加description的label,更加详细地描述image内容。对于非软件版本的更新(例如:更新安全漏洞),Base image的tag不会更新。为了追踪Base image的版本信息,需要在image中加入构建该image的Dockerfile的commit id。
例如:
3.3 业务镜像命名规则
业务镜像的命名规则以项目为仓库进行隔离,例如在一个支付项目中,我们使用payment镜像仓库,另一个风控项目使用risk-control镜像仓库,下面是我们约定的镜像命名规范:
repo:用项目名作为仓库,来管理该项目下的所有镜像。
name:描述该image中所包含的业务。
tag:commit id(前7位)和timestamp(12位,yymmddHHMMSS)组合成唯一标识,中间通过“-”连接。
例如:
4 镜像的版本管理
版本控制规范用于确定软件配置项的命名与版本号管理的规则,以确保清楚地、唯一地标识软件的各个组成部分及其状态,并建立这些部分之间的一致性关系。