本篇文章2547字,读完约6分钟

Dockerfile是用于构建图像的文本文件,文本内容包含构建图像所需的说明和指令。

复制

命令将文件或目录从上下文目录复制到容器中的指定路径。

格式:

复制[ - chown=:]...

复制[ - chown=:] [" ",..." "]

[-chown =:]:可选参数,用户可以更改复制到容器中的文件的所有者和组。

:源文件或源目录,它可以是通配符表达式,其通配符规则应符合filepath.match规则。例如:

复制hom* /mydir/

收到吗?。txt /mydir/

:容器中的指定路径,不需要预先构建。如果路径不存在,将自动创建它。

增加

添加说明和副本的格式是相同的(在相同的需求下,官方推荐使用副本)。功能相似,但有以下区别:

添加的优点:如果文件被压缩为tar,当压缩格式为gzip、bzip2和xz时,它将被自动复制和解压缩。

添加的缺点:tar压缩文件不解压缩就无法复制。这将使镜像构建缓存无效,这可能会使镜像构建变慢。是否使用它可以根据是否需要自动解压缩来决定。

煤矿管理局

与运行指令类似,它用于运行程序,但运行时间点不同:

码头工人运行时Cmd运行。

运行是在码头建设。

函数:为已启动的容器指定要运行的默认程序,当程序运行时,容器将结束。由cmd指令指定的程序可以被在docker run命令行参数中指定的要运行的程序覆盖。

注意:如果dockerfile中有多个cmd指令,只有最后一个才会生效。

格式:

煤矿管理局

cmd ["",""," ","...]

cmd [""," ","...]

第二种格式是推荐的,实现过程是清晰的。事实上,第一种格式会自动转换成第二种格式运行,默认的可执行文件是sh。

入口点

它类似于cmd指令,但不会被docker run的命令行参数指定的指令覆盖,这些命令行参数将作为参数发送到entrypoint指令指定的程序。

但是,如果在运行docker run时使用- entrypoint选项,则该选项的参数可以覆盖由entrypoint指令指定为要运行的程序。

优点:入口点所需的参数可以在执行docker run时指定。

注意:如果dockerfile中有多个入口点指令,只有最后一个才会生效。

格式:

入口点["",""," ","...]

它可以与cmd命令一起使用:cmd通常用作变量参数,这里的cmd相当于将参数传递给entrypoint,这将在下面的示例中提到。

示例:

假设nginx:测试映像是通过dockerfile构建的;

来自nginx

入口点["nginx "、"-c"] #参数确定

Cmd ["/etc/nginx/nginx.conf"] #参数

1.运行时不传递参数

$ docker运行nginx:测试

默认情况下,以下命令将在容器中运行,以启动主进程。

nginx -c /etc/nginx/nginx.conf

2.传递要运行的参数

$ docker run nginx:test-c/etc/nginx/new . conf

默认情况下,以下命令将在容器中运行,以启动主进程(/etc/nginx/new.conf:假定该文件已经存在于容器中)

nginx -c /etc/nginx/new.conf

env

设置环境变量并定义环境变量,然后该环境变量可以在后续指令中使用。

格式:

env

env==...

以下示例将节点版本设置为7.2.0,在后续指令中可以被$node_version引用:

env node _ 7 . 2 . 0版

运行curl-SLO " nodejs/dist/v $ node _ version/node-v $ node _ version-Linux-x64 . tar . xz " \

& & curl-SLO " nodejs/dist/v $ node _ version/shasums 256 . txt . ASC "

施工参数,与环境有一对一的影响。但是范围不同。由arg设置的环境变量仅在dockerfile中有效,也就是说,它仅在docker构建过程中有效,并且该环境变量在构建的映像中不存在。

您可以用- build-arg =重写build命令docker build。

格式:

arg [=]

定义匿名数据卷。如果在启动容器时忘记装入数据卷,它将自动装入匿名卷。

角色:

避免因容器重启而丢失重要数据是至关重要的。

避免容器变得越来越大。

格式:

卷[""," "...]

当开始集装箱码头工人运行时,我们可以用-v参数修改装载点。

揭露

只需申报港口。

角色:

帮助镜像用户理解这个镜像服务的守护端口,以便于映射配置。

当运行时使用随机端口映射时,即docker run -p,暴露的端口将被自动随机映射。

格式:

暴露[...]

工作目录

指定工作目录。由workdir指定的工作目录将存在于构建映像的每一层中。(必须预先创建由workdir指定的工作目录。)。

每个运行命令都是docker build在图像构建过程中的一个新层。只有通过workdir创建的目录才会一直存在。

格式:

工作目录

用户

用于指定执行后续命令的用户和用户组。这只是为了切换执行后续命令的用户(用户和用户组必须提前存在)。

格式:

用户[:]

健康检查

用于指定一个程序或指令来监控码头集装箱服务的运行状态。

格式:

运行状况检查[选项] cmd:设置检查容器运行状况的命令

无运行状况检查:如果基本图像有运行状况检查说明,请使用此行屏蔽其运行状况检查说明

Healthcheck [option] cmd:此处使用了cmd后面的命令,因此您可以参考cmd的用法。

onbuild

用于延迟生成命令的执行。简而言之,在构建映像的过程中,不会执行dockerfile中onbuild指定的命令(假设映像是测试构建的)。当一个新的dockerfile使用以前从测试构建中构建的映像时(这是新映像的dockerfile构造),将执行由onbuild在测试构建的dockerfile中指定的命令。

格式:

onbuild

来源:搜狐微门户

标题:云计算核心技术Docker教程: Dockerfile指令详解

地址:http://www.shwmhw.com/shxw/11643.html