在此整理Dockerfile常用指令
FROM:原始镜像(scratch空白镜像),在指定镜像上定制。
RUN:1)shell类型 :直接输入命令
2)exec类型:RUN["可执行文件","param1","param2"]
ps:多个RUN会在每个指令后commit这一层,通过 “\ (换行)&& ”接多个指令
COPY:1)shell:COPY <源路径>...<目标路径> ,源路径可以是多个也可以是通配符,这的路径指的都是上下文路径,而不是Dockcerfile文件相对路径或你的docker命令路径,如“docker build . ”此时指定了上下文路径就是"."
目标路径可以是容器内绝对路径,也可以是WORKDIR的相对路径
2)exec。。。
ADD:和COPY差不多,源路径可以用url,去url中下载的文件,tar会自动解压。
CMD:指定默认的容器主进程,主进程默认为/bin/bash
1)shell:命令被包装成sh -c,主进程为sh
2)exec
ENTRYPOINT:目的和CMD类似,指定容器启动程序和参数,其参数可以在运行时替代docker run --entrypoint
ENV:设置环境变量
1)ENV<key><value>
2)ENV<key1>=<value1> <key2>=<value2>
ps:可用于ADD、COPY、ENV、EXPOSE、LABEL、USER、WORKDIR、VOLUME、STOPSIGNAL、ONBUILD
ARG:构建参数,设置的是构建环境的环境变量,在将来容器运行时不会存在。
ARG<参数名>[=<默认值>],docker build --build-arg<参数名>=<参数值>
VOLUME:匿名卷,“VOLUME /data”容器运行时,向data中写入的信息不会进入容器存储层
EXPOSE:运行时容器提供的服务端口,-P <宿主端口>:<容器端口>,-P是映射宿主端口和容器端口,EXPOSE并不会自动在宿主进行端口映射,只是说打算使用哪些端口。
WORKDIR:改变当前工作目录,可以影响以后的层。
USER:改变身份,和WORKDIR类似
HEALTHCHECK:健康检查,
1)HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况命令
2)HEALTHCHECK NONE:屏蔽健康检查
选项:
--interval=<间隔>:默认30秒
--timeout=<时长>:设置检查时间,超时就失败,默认30秒
--retries=<次数>:连续失败次数后,视为unhealthy,默认3次
ONBUILD:以当前镜像为基础镜像时,去构建下一级镜像的时候才会被执行。
ONBUILD <其他指令>