Docker初体验,关于Dockerfile那点事

一、Dockerfile的格式

Dockerfile的格式如下:

# Comment

以“#”开头的行为注释行。跨行注释也必须加“#”,Dockerfile不支持连续字符“”。命令解析指令也是以“#”开头,命令解析器是一个可选项,位于Dockerfile的首行,只允许出现一次,第二次出现则被认为是注释,在解析器中换行符同样是不被支持的,但是其中的非断行空格是允许的。

#directive=value
# directive =value
#   directive= value
# directive = value 

# escap

Escape在dockerfile中被用作转义字符和换行符,如果不特别指定,系统默认的转义字符为: (反斜杠)。转义不能在RUN命令中执行,除非位于行末进行格式换行。作为换行符时,escape允许Dockerfile指令跨行执行。反引号在Windows下非常有用(举例可以参阅官方文档

# escape=\ (反斜杠)# escape=` (反引号)

INSTRUCTION arguments

INSTRUCTION一般被称为指令或者命令,对大小写不敏感,为了与其他参数区别开,习惯大写。

.dockerfileignore file

使用Dockerfile构建镜像时最好是将Dockerfile放置在一个新建的空目录下。然后将构建镜像所需要的文件添加到该目录中。为了提高构建镜像的效率,你可以在目录下新建一个.dockerignore文件来指定要忽略的文件和目录。.dockerignore文件的排除模式语法和 Git的.gitignore文件相似。

二、相关指令详解

FROM

每个Dockerfile必须以FROM指令开头,FROM指明了当前镜像创建的基镜像,也就是说每个镜像必须基于一个已存在的镜像进行创建。FROM指令后直接跟基镜像的名称或者镜像名称加标签。镜像的名称和标签可以去Docker Hub或者使用命令docker search keyword 进行搜索。用法如下:

扫描二维码关注公众号,回复: 1482578 查看本文章
FROM <image>

FROM <image>[:<tag>] 

ARG

ARG指令定义了用户可以在创建镜像时或者运行时传递的变量,申明于调用类似于shell中的变量申明与定义。

ARG  CODE_VERSION=latest
FROM base:${CODE_VERSION}

ENV

ENV指令用来定义镜像的环境变量,并且可以引用已经存在的环境变量,例如:HOME、HOSTNAME、PATH。ENV的值跟ARG指令申明的变量一样可以传递、被引用,定义方法也基本一致。

原文链接

猜你喜欢

转载自blog.csdn.net/weixin_40581617/article/details/80537625