本篇文章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