Dockerfile - 参数与详解
只有FROM时必须的
# 在当前路径下构建test镜像,执行Dockerfile文件
docker build -t test .
1.FROM
制定基于那个镜像进行构建
FROM alpine:latest
2.WORKDIR
指定工作目录,执行shell脚本的工作目录
WORKDIR /app
3.COPY ADD
复制文件,将宿主机文件拷贝到镜像中
ADD可以是网络资源,并且可以解压;COPY一定是宿主机上的资源
COPY src/ /app
4.RUN
执行的shell脚本,运行在指定的工作目录下,且在镜像构建时运行
RUN echo 321 >> 1.txt
5.CMD ENTRYPOINT
执行的shell脚本,运行在指定的工作目录下,且在容器运行时运行
非json数组按ENTRYPOINT,其他进行拼接
# 阻塞
CMD tail -f 1.txt
CMD ["tail", " -f ", "1.txt"]
# 非阻塞
CMD cat 1.txt
# 在镜像启动过程中也会出现该现象 非阻塞容器会变成stop状态,执行完毕
6.EXPOSE
暴露的端口
# nginx镜像中有
EXPOSE 80
这样可以使用docker run -p -v 来指定端口和存储卷
7.VOLUME
需要挂载的存储卷目录
VOLUME /app/src
8.ENV
指定环境变量
ENV a=10
CMD echo $a
9.ARG
指定构建变量
docker build -t test --build-arg b=12 .
可以在构建时该参数
ARG b=10
ENV a=$b
CMD echo $a
10.LABEL
指定一些标识,一般写在Dockerfile的第二行
LABEL k1="v1" k2="v2"
这样在docker inspect test
可以看到这个label,没有其他作用,就是用来标识的
11.ONBUILD
指定出的变量,是只有基于生成的镜像再进行构建时才会生效
ONBUILD ENV c=100
12.STOPSIGNAL
13.HEALTHCHECK
14.SHELL
指定运行脚本类型
# linux默认的
SHELL /bin/sh
# windows默认的
SHELL cmd
SHELL /bin/bash