FROM
用于拉取基础镜像,第一个非注释行COPY
用于从docker主机复制文件至创建的新映像文件
COPY <src>...<dest>
COPY ["src",..."<dest>"]
ADD
类似于COPY指令,ADD支持使用tar文件和url路径
ADD <src>...<dest>
ADD ["<src>,...<dest>"]
WORKDIR
配置工作目录VOLUME
定义匿名卷,事先指定某些目录挂载为匿名卷,运行时用户未指定挂载,应用也可正常运行,且不会向容器存储层写入大量数据
VOLUME <path>
VOLUME["<path1>...<path2>"]
EXPOSE
用于为容器打开指定要监听的端口以实现与外部通信
EXPOSE <port>[/<protocol>] [<port>[/<protocol>]]
ENV
用于为镜像定义所需的环境变量,并可被Dockerfile文件其后的指令所调用
ENV key value
此种格式,key之后的内容均会被视作value的组成部分,因此一次只能设置一个变量ENV key=value
可一次设置多个变量,每个变量都是一个“key=value”形式的键值对,如果value中包含空格可使用/进行转义RUN
用于指定docker build过程中运行的程序,其可以是任何命令
RUN <COMMAND>
RUN ["<execute>","<param1>","<param2>"]
CMD
类似于RUN命令,CMD命令可用于任何命令或应用程序,不过二者的运行时间点不同
CMD <COMMAND>
同RUN命令CMD ["<execute>","<param1>","<param2>"]
同RUN命令CMD ["<param1>","<param2>"]
用于为ENTRYPOINT命令提供默认参数ENTRYPOINT
于CMD功能类似,用于为容器指定默认运行程序,使容器像一个单独的可执行程序
ENTRYPOINT <COMMAND>
ENTRYPOINT ["<execute>","<param1>","<param2>"]
HEALTHCHECK
HEALTHCHECK [options] CMD [command]
ARG
定义变量在build时应用使用--build-arg ARG <varname>[=<value>]
FROM nginx:1.14-alpine
LABEL maintainer="dyb<dyb0204@gmail.com>"
ENV NGX_DOC_ROOT='/data/web/html/'
ADD index.html ${NGX_DOC_ROOT}
ADD entrypoint.sh /bin/
EXPOSE 80/tcp
HEALTHCHECK --start-period=5s CMD wget -O - -q http://{IP:-0.0.0.0}
CMD ["/usr/sbin/nginx","-g","daemon off;"]
ENTRYPOINT [ "/bin/entrypoint.sh" ]
#!/bin/sh
#
cat > /etc/nginx/conf.d/default.conf << EOF
server {
server_name 0.0.0.0;
listen ${IP:-0.0.0.0}:${PORT:-80};
root ${NGX_DOC_ROOT:-/usr/share/nginx/html};
}
EOF
# 修改nginx的默认配置文件
# 调用CMD中的命令替换此进程
exec "$@"
# index.html
<P>Docker Nginx Test Sever</P>
docker build -t <image_name>:<tag> ./
docker run -it -d -p 80:80 <image_name>:<tag>
原文:https://www.cnblogs.com/dyb0204/p/11367897.html