ADD 指令用于复制文件,格式为:* ADD  <src>...<dest>* ADD ["<src>",..."<dest>"]从 src 目录复制文件到容器的 dest。其中 src 可以是Dockerfile 所在目录的相对路径,也可以是一个URL,还可以是一个压缩包。说明:1)src 必须在构建的上下文内,因为 docker build 命令首先会将上下文路径和其子目录发送到 docker daemon。2)如果 src 是一个 URL ,同时 dest 不以斜杠结尾,dest 将被视为文件, src 对应内容文件将被下载到 dest 。3)如果 src 是一个 URL ,同时 dest 以斜杠结尾,dest 将被视为目录,src 对应内容将被下载到 dest 目录。4)如果 src 是一个目录,那么整个目录下的内容将被复制,包括文件系统元数据。5)如果文件是可识别的压缩包格式,则 docker 会自动解压。例如:ADD   XXXX-0.0.1-SNAPSHOT.jar  app.jar 
   ARG 指令用于设置构建参数。ARG 指令设置的是构建时的环境变量,在容器运行时不会存在这些变量的。例如:ARG  user1=someuser
  CMD 指令用于为执行容器提供默认值。每个 Dockerfile 只有一个 CMD 命令,如果指定了多个 CMD 命令,那么只有最后一条会被执行,如果启动容器的时指定了运行的命令,则会覆盖CMD 指定的命令。支持 3 种格式:1)CMD ["executable","param1","param2"]-----推荐这种方式2)CMD ["param1","param2"]  ------为 ENTRYPOINT 指令提供预设参数3)CMD command  param1  param2  ------- 在 shell 中执行
  复制文件,格式为:1)COPY  <src>....<dest>2)COPY ["<src>",..."<dest>"]复制本地端的 src 到容器的 dest 。COPY指令和 ADD 指令类似,但是 COPY 指令不支持 URL和压缩包。
 格式为:1)ENTRYPOINT  ["executable","param1","param2"]2)ENTRYPOINT  command  param1  param2ENTRYPOINT 和 CMD 指令的目的一样,都是指定 Docker 容器启动时执行的命令,可多次设置,但只有最后一个有效。
  ENV 指令用于设置环境变量,格式为:1)ENV <key> <value>2)ENV <key> = <value>...例如: ENV  JAVA_HOME  /path/to/java 
   EXPOSE  指令用于声明在运行时容器提供服务的端口,格式为:EXPOSE  <port>  [<port>...]注意:这里只是一个声明,运行时并不会因为该声明就打开相应的端口。该指令的作用主要是帮助镜像使用者理解该镜像服务的守护端口;其次是当运行时使用随机映射时,会自动映射 EXPOSE 的端口。示例:EXPOSE   port1    // 声明暴露一个端口docker  run  -p  port1  image   // 相应的运行容器使用的命令docker  run  -P image  // 使用 -P 选项启动EXPOSE  port1   port2  port3  // 声明暴露多个端口docker  run  -p  port1   port2  port3  image  // 相应的运行容器使用的命令docker  run  -p   host_port1:port1   -p  host_port2:port2   -p  host_port3:port3   image 
  使用 FROM 指令指定基础镜像。FROM 指令必须指定且需要写在其他指令之前。FROM 指令后的所有指令都依赖于该指令所指定的镜像。支持 3 种格式:1)FROM  <image>2)FROM  <image>:<tag>3)FROM  <image>@<digest>
   LABEL 指令用于为镜像添加元数据。格式为: LABEL <key> = <value>  <key> = <value>  <key> = <value> ...使用 “  "  ” 和 “  \ ” 转换命令行,例如:LABEL  "com...." = "ACME...."LABEL   com.x = "foo"LABEL   version = "1.0"LABEL   description = "This  text  ill \ that  label-values can span  muttiple lines. "
   MAINTAINER 指令用于指定维护者的信息,用于为 Dockerfile 署名。格式为: MAINTAINER  <name>
   该指令支持两种格式:1)RUN  <command>2)RUN  ["executable" , "param1" , "param2"]
   USER  指令用于设置启动镜像时的用户或者 UID ,写在该指令后的 RUN 、CMD 以及 ENTRYPOINT 指令都将使用该用户执行命令。格式为:USER  用户名例如:USER   daemon
  VOLUME 指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享给其他容器。当容器中的应用有持久化数据的需求时可以在 Dockerfile 中使用该指令。格式为:VOLUME    ["/data"]例如:VOLUME   /data
	格式为:WORKDIR  /path/to/workdir切换目录指令,类似于 cd 命令,写在该指令后的 RUN 、CMD 以及 ENTRYPOINT 指令都将该目录作为当前目录,并执行相应的命令。
   扩展内容,可自行阅读 https://docs.docker.com/reference/dockerfile/
   一、准备工作执行下面的命令,将项目构建成 jar 包 :mvn  clean  package    二、镜像构建1)在 jar 包所在目录,创建名为 Dockerfile 的文件touch  Dockerfile 2)在 Dockerfile 文件中添加以下内容// 基于哪个镜像FROM  java:8   // 将本地文件夹挂载到当前容器VOLUME  /tmp   // 复制文件到容器ADD   xxxx.jar    app.jar  // 声明需要暴露的端口EXPOSE  8761  // 配置容器启动后执行的命令ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]   3)使用 docker  build  命令构建镜像格式:docker   build   -t   仓库名称/镜像名称(:标签)   Dockerfile 相对位置例如:docker   build   -t   itmuch/xxxx:0.0.1  . 三、启动镜像docker   run   -d    -p   8761:8761  itmuch/xxxx:0.0.1 四、访问服务http://Docker宿主机IP:8761/