从基础镜像构建一个容器 执行一条指令,对容器作出修改 执行相似docker commit 的操做 再基于刚提交的镜像运行一个新容器 执行Dockerfile中下一条指令,直至全部的指令执行完毕
form <image> form <image>:<tag> form指令必须是第一条非注释的指令 maintainer maintainer <name> 指定镜像的做者信息,包含镜像的全部者和联系信息 //这个是否是要不要都行啊,要这个有鸟用啊
run <command> (shell模式) //默认的/bin/bash run ["executable","param1","param2"] (exec模式) run ["/bin/bash","-c","echo hello"]
expose <port> [<port>] //这个expose并不会再执行的时候自动打开相应的端口,这个只是告诉程序员,应该用这个端口来运行,擦
提供容器启动时执行的默认命令 cmd ["executable","param1","param2"] (exec模式) cmd command param1 param2 (shell模式) cmd ["param1","param2"](做为entrypoint指令的默认参数) cmd指令用于执行容器执行的默认行为,若是docker run的时候使用了其余指令,那么cmd命令会被覆盖
entrypoint ["executable","param1","param2"] (exec模式) entrypoint command param1 param2 (shell模式) entrypoint的命令不会被docker run的启动命令覆盖,可是能够使用docker run --entrypoint进行覆盖
volume["/data"] 向docker建立的容器添加卷,这个卷能够跳过联合文件系统,提供共享数据,或数据持久化的功能
再容器的内部默认工做目录,cmd等命令会再这个路径下执行命令,workdir一般会使用绝对路径,若是使用了相对路径,那么工做路径会一直传递下去程序员
env <key><value> env <key>=<value>
user daemon 用户会以一个什么身份取运行
onbuild[instruction] 当一个 镜像被其余镜像做为基础镜像时执行(要充分理解这句话) 会在构建过程当中插入指令