从
<强>/强>
功能为指定基础镜像,并且必须是第一条指令。
如果不以任何镜像为基础,那么写法为:从零开始。
同时意味着接下来所写的指令将作为镜像的第一层开始
语法:
<代码> & lt; image> 从& lt; image>: & lt; tag> 从& lt; image>: & lt; digest>三种写法,其中& lt; tag>和& lt; digest>是可选项,如果没有选择,那么默认值为最新代码>
<强> 强>
运行功能为运行指定的命令
运行命令有两种格式
<代码> 1。运行& lt; command> 2. 运行(“可执行”、“param1”、“param2”)第一种后边直接跟壳命令 在linux操作系统上默认/bin/sh - c 在windows操作系统上默认cmd/S/C 代码>
第二种是类似于函数调用。
可将可执行的理解成为可执行文件,后面就是两个参数。
两种写法比对:
<代码>运行/bin/bash - c的$ HOME/. bashrc来源;echo $ HOME 运行(“/bin/bash”,“c”,“回声你好”) 注意:多行命令不要写多个运行,原因是Dockerfile中每一个指令都会建立一层。 多少个运行就构建了多少层镜像,会造成镜像的臃肿,多层,不仅仅增加了构件部署的时间,还容易出的错。 运行书写时的换行符是\ 代码>
<强> CMD 强>
功能为容器启动时要运行的命令
语法有三种写法
<代码> 1。CMD(“可执行”、“param1”、“param2”) 2. CMD (“param1”、“param2”) 3.CMD命令param1 param2第三种比较好理解了,就时壳这种执行方式和写法 第一种和第二种其实都是可执行文件加上参数的形式 举例说明两种写法: CMD(“上海”、“c”,“echo $ HOME” CMD(“回声”,“$ HOME”) 补充细节:这里边包括参数的一定要用双引号,就是”,不能是单引号。千万不能写成单引号。 原因是参数传递后,码头工人解析的是一个JSON数组代码>
<>强及运行;CMD 强>
不要把运行和CMD搞混了。
<代码>运行是构件容器时就运行的命令以及提交运行结果 CMD是容器启动时执行的命令,在构件时并不运行,构件时紧紧指定了这个命令到底是个什么样子代码>
<强> 强>
标签功能是为镜像指定标签
语法:
<代码>标签& lt; key>=& lt; value>& lt; key>=& lt; value>& lt; key>=& lt; value>…一个Dockerfile种可以有多个标签,如下: 标签com . example。”供应商”=癆CME合并” 标签com.example.label-with-value=" https://www.yisu.com/zixun/foo " 标签version=" 1.0 " 标签描述="本文说明\ label-values可以跨越多个行。”但是并不建议这样写,最好就写成一行,如太长需要换行的话则使用\符号代码>
如下:
<代码>标签多。label1=\“value1” 多。label2=value2 \ 其他=" value3” 说明:标签会继承基础镜像种的标签,如遇到关键相同,则值覆盖代码>
<强>维护者强>
指定作者
语法:
<代码>维护者& lt; name> 暴露 功能为暴漏容器运行时的监听端口给外部 但是公开并不会使容器访问主机的端口 如果想使得容器与主机的端口有映射关系,必须在容器启动的时候加上- p参数代码>
<强> ENV 强>
功能为设置环境变量
语法有两种
<代码> 1。ENV & lt; key>& lt; value> 2. ENV & lt; key>=& lt; value>…两者的区别就是第一种是一次设置一个,第二种是一次设置多个代码>
<强>添加强>
一个复制命令,把文件复制到景象中。
如果把虚拟机与容器想象成两台linux服务器的话,那么这个命令就类似于scp,只是scp需要加用户名和密码的权限验证,而不添加用。
语法如下:
<代码> 1。添加& lt; src>…& lt; dest> 2. 添加(“& lt; src>”,……“& lt; dest>“ & lt; dest>路径的填写可以是容器内的绝对路径,也可以是相对于工作目录的相对路径 & lt; src>可以是一个本地文件或者是一个本地压缩文件,还可以是一个url 代码>
如果把& lt; src>写成一个url,那么就添加类似于wget命令
如以下写法都是可以的:
<代码>添加测试relativeDir/添加测试/relativeDir 添加http://example.com/foobar 尽量不要把& lt; scr>写成一个文件夹,如果& lt; src>是一个文件夹了,复制整个目录的内容,包括文件系统元数据码头工人Dockerfile详解