Dockerfile常用指令

FROM
指定base镜像
支持三种格式:
FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>
FROM指令必须指定,且需要在Dockerfile其他指令的前面。指定的基础指令可以是官方远程仓库中的,也可以是位于本地仓库。后续的指令都依赖于该指令指定的image。 在同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令。
MAINTAINER
设置镜像作者
格式:MAINTAINER <name> 
COPY
将文件从build context 复制到镜像
格式为:
COPY <src>…<dest>
COPY [“<src>”, …”<dest>”], shell中执行
复制本地的src到容器的dest, 和ADD指令相似,但是COPY不支持URL和压缩包
ADD
将文件从build context 复制到镜像
格式:ADD <src>…<dest>
          ADD [“<src>”, …”<dest>”]
从src目录复制文件到容器的dest目录,src可以是Dockerfile所在目录的相对路径,也可以是一个url,还可以是一个压缩包。
注意事项:
1. src必须在构建的上下⽂内,不能使⽤例如: ADD ../some/something ,因为 docker build 命令⾸先会将上下⽂路径和其⼦⽬录发送到docker daemon
2. 如果src是⼀个URL,同时dest不以斜杠结尾,dest将会被视为⽂件,src对应内容⽂件将会被下载到dest
3. 如果src是⼀个URL,同时dest以斜杠结尾,dest将被视为⽬录,src对应内容将会被下载到dest⽬录
4. 如果src是⼀个⽬录,那么整个⽬录其下的内容将会被拷⻉,包括⽂件系统元数据
5. 如果⽂件是可识别的压缩包格式,则docker会⾃动解压
RUN
在容器中执行命令
支持两种格式:
RUN <command> 在shell终端中运行命令,在Linux中默认是/bin/sh -c 
RUN[“executable”, “param1”, “param2”],使用exec执行,指定其他终端,例如:RUN[“/bin/bash”, “-c”, “echo hello”],该方式会被转成json数组。
CMD
容器启动时执行指定命令
CMD [“executable”, “param1”, “param2”], 推荐使用该方式
CMD [“param1”, “param2”],为ENTRYPOINT指令提供预设参数
CMD command param1 param2 在SHELL中执行
CMD指令的主要目的是为执行容器提供默认值,每个Dockerfile只有一个CMD命令,如果指定了多个CMD命令,也只会有一条执行,如果启动容器的时候指定了运行的命令,则会覆盖掉CMD指定的命令。
ENTRYPOINT
指定Docker容器启动时执⾏的命令
格式为: ENTRYPOINT [“executable”, “param1”, “param2”]
               ENTRYPOINT command param1 param2
指定Docker容器启动时执⾏的命令,可以多次设置,但是只有最后⼀个有效。
VOLUME
将文件或目录声明为volume
格式为: VOLUME [“/data”]
使容器中的⼀个⽬录具有持久化存储数据的功能,该⽬录可以被容器本身使⽤,也可以共享给其他容器。
USER
设置启动容器的⽤户
格式为: USER ⽤户名,默认是root⽤户。
WORKDIR
切换⽬录指令
格式为: WORKDIR /path/to/workdir
切换⽬录指令,类似于cd命令,对RUN、CMD、ENTRYPOINT⽣效。
镜像构建完成后进入容器当前目录即为WORKDIR
ARG
定义⼀个变量。
格式为: ARG <name>[=<default value>]
ONBUILD
指定当前建⽴的镜像作为其他镜像的基础时,所执⾏的命令。
格式为:ONBUILD [INSTRUCTION]
ENV
设置环境变量
环境变量可以被后面的指令使用
 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容