FROM centos
RUN <命令行命令> # 多个命令之间用&&连接
COPY <源路径> <目标路径> # 从上下文目录中复制文件或目录到容器里制定路径
ADD <源路径> <目标路径> # 功能同ADD类似,官方推荐COPY
CMD <命令行命令> # 类似于RUN,RUN是在docker build时运行,CMD是在docker run时运行。作用是为启动的容器制定默认要运行的程序,如果Dockerfile中有多个CMD指令,仅最后一个生效,同时可被docker run命令行参数中指定要运行的程序所覆盖。
ENTRYPOINT <命令行命令> # 类似于CMD,但是在docker run的时候不会被覆盖。可以搭配CMD使用
ENV <key1>=<value1> <key2>=<value2> # 设置环境变量,例如ENV NODE_VERSION 7.2.0 ,后续指令中可以通过$NODE_VERSION引用
ARG # 与 ENV 作用一至。不过作用域不一样。ARG仅针对Dockerfile内有效,镜像内无效
VOLUME ["<路径1>", "<路径2>"] # 定义匿名数据卷,在启动容器时忘记挂载数据卷,会自动挂在口上到匿名卷
EXPOSE <端口> # 仅仅只是声明一下端口,以方便使用人员配置映射
WORKDIR <指定工作目录>
假设已经通过以下dockerfile构建了nginx镜像
FROM nginx
ENTRYPOINT ["nginx", "-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参
docker run nginx
容器内会默认运行以下命令来启动进程 nginx -c /etc/nginx/nginx.conf
docker run nginx -c "/etc/nginx/new.conf"
容器内会默认运行以下命令来启动进程 nginx -c /etc/nginx/new.conf
docker build -t nginx:v3 .
原文:https://www.cnblogs.com/pyweb/p/14593559.html