Dockerfile MAINTAINER和LABEL指令 语法解析

  任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者等等。Docker提供了MAINTAINER和LABEL用于处理镜像的元数据。

  MAINTAINER 指令

  MAINTAINER 语法

MAINTAINER <name>

  MAINTAINER 语义

  指定镜像作者信息,即镜像的Author属性。LABEL是一个更灵活的版本,可以替代MAINTAINERLABEL可以设置任何需要设置的元数据,并且可以轻松查看,例如docker inspect。使用LABEL设置MAINTAINER可以使用如下命令:

LABEL maintainer="Securitit@163.com"

  MAINTAINER 示例

  · MAINTAINER 指令示例

​  进入/securitit/dockerfile/目录(根据个人选择,这是本文使用的目录),创建dockerfile文件。

FROM nginx
MAINTAINER Securitit
CMD /bin/bash

  执行如下的构建命令,基于dockerfile构建镜像。

docker build -f /securitit/dockerfile/dockerfile -t securitit-nginx-maintainer:1.0.0.1 .

在这里插入图片描述

  通过docker inspect命令查看镜像Author的值。

docker inspect -f {{".Author"}} 3fb14d33b527

在这里插入图片描述

  · LABEL 指令示例

  进入/securitit/dockerfile/目录(根据个人选择,这是本文使用的目录),编辑dockerfile文件。

FROM nginx
LABEL maintainer="Securitit"
CMD /bin/bash

  执行如下的构建命令,基于dockerfile构建镜像。

docker build -f /securitit/dockerfile/dockerfile -t securitit-nginx-maintainer:1.0.0.1 .

在这里插入图片描述

  通过docker inspect命令查看镜像Config.Labels.maintainer的值。

docker inspect -f {{".Config.Labels.maintainer"}} 24ac4aa4feb7

在这里插入图片描述

  MAINTAINER 注意

  按照官方文档描述,可以使用LABEL maintainer="xxx"代替MAINTAINER xxx,但还是需要注意两者设置的值,在镜像的描述文件中所处位置是不一样的。

  · MAINTAINER xxx位于顶层Author属性中。

  · LABEL maintainer="xxx"位于Config.Labels.maintainer属性中。

   LABEL 指令

​   LABEL 语法

LABEL <key>=<value> <key>=<value> <key>=<value> ...

  LABEL 语义

  · LABEL为镜像增加元数据,一个LABEL是键值对,多个键值对之间使用空格分开,命令换行时是使用反斜杠\

LABEL "email"="Securitit@13.com"
LABEL email-host="www.wangyi.com"
LABEL email-version="1.0"
LABEL email-description="This is my \
      persional email."

  · 一个镜像可以有很多LABEL,可以在一行中指定多个元数据。方法有以下两种:

LABEL multi.label-1="value-1" multi.label-2="value-2" multi.label-3="value-3"
LABEL multi.label-1="value-1" \
	  multi.label-2="value-2" \
	  multi.label-3="value-3"

  · 基础镜像或父镜像中包含的元数据由当前镜像继承。如果元数据已经存在,但具有不同的值,则最近应用的值将覆盖以前设置的任何值。

  LABEL 示例

  · 单指令设置多个元数据

  进入/securitit/dockerfile/目录(根据个人选择,这是本文使用的目录),创建dockerfile文件。

FROM nginx
LABEL email="Securitit@163.com" \
      email-host="www.wangyi.com" \
      email-description="This is my \
persional email."
CMD /bin/bash

​  执行如下的构建命令,基于dockerfile构建镜像。

docker build -f /securitit/dockerfile/dockerfile -t securitit-nginx-label:1.0.0.1 .

在这里插入图片描述

  通过docker inspect命令查看镜像Config.Labels.maintainer的值。

docker inspect -f {{".Config.Labels"}} b0e46ba36ff4

在这里插入图片描述

  · 继承元数据示例

  进入/securitit/dockerfile/目录(根据个人选择,这是本文使用的目录),编辑dockerfile文件,只修改email的内容,其他内容期望从securitit-nginx-label:1.0.0.1继承。

FROM securitit-nginx-label:1.0.0.1
LABEL email="Securitit@126.com"
CMD /bin/bash

  执行如下的构建命令,基于dockerfile构建镜像。

docker build -f /securitit/dockerfile/dockerfile -t securitit-nginx-label:1.0.0.2 .

在这里插入图片描述

  通过docker inspect命令查看镜像Config.Labels.maintainer的值。

docker inspect -f {{".Config.Labels"}} b0e46ba36ff4

在这里插入图片描述

  可以看到除了email外,email-host和email-description均是从基础镜像中继承得来的。

  总结

​  MAINTAINER已经过时,在新版本已不推荐使用,如果允许的尽可能使用LABEL完成元数据设置,元数据的应用在系列博文中会继续讲解。

  若文中存在错误和不足,欢迎指正!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值