FROM
FROM 镜像
相当于java中所有类都继承某一个类
scratch相当于java中的Object基类
MAINTAINER
作者姓名、邮箱
RUN
运行命令
如 tomcat dockerfile:RUN mkdir -p "$CATALINA_HOME"
EXPOSE
对外暴露的端口号,
如tomcat dockerfile:EXPOSE 8080
WORKDIR
根据镜像创建容器后,终端默认的工作目录
如tomcat dockerfile:WORKDIR $CATALINA_HOME
在执行docker exec -it tomcat容器id默认的工作目录
ENV
设置环境变量
格式:
ENV <key> <value>
或者
ENV <key1>=<value1> <key2>=<value2>...
如tomcat dockerfile:ENV CATALINA_HOME /usr/local/tomcat
后面可以通过$CATALINA_HOME使用
COPY
将 宿主机 目录下文件 拷贝 到镜像中
格式:
COPY 宿主机源路径1 镜像目标路径
COPY ["宿主机源路径1",... "镜像目标路径"]
ADD
将 宿主机 目录下 tar压缩文件 拷贝 到镜像中,并解压
格式与 COPY 相同
VOLUME
定义数据卷。
在启动容器时没有挂载数据卷,会自动挂载到匿名卷
- ubuntu匿名卷位置:
/var/lib/docker/volumes/
作用
- 避免重要的数据,因容器重启而丢失,这是非常致命的。
- 避免容器不断变大。
格式:
VOLUME ["<路径1>", "<路径2>"...]
VOLUME <路径>
在启动容器 docker run 的时候,我们可以通过 -v 参数修改挂载点。
CMD
在docker run时运行的命令
注意:
- 可以有多个CMD,但只有最后一个生效
- CMD会被
docker run后面的参数替换掉
如tomcat dockerfile:CMD ["catalina.sh", "run"]
ENTRYPOINT
在docker run时运行的命令
注意:
可以有多个 ENTRYPOINT 指令,但只有最后一个生效。
不会被
docker run后面的参数替换掉,而且这些参数会发送给ENTRYPOINT指令如果
docker run时使用了--entrypoint选项,此选项的参数可覆盖 ENTRYPOINT 指令指定的程序。
优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。
ONBUILD
假设father的dockerfile有ONBUILD指令,构建father镜像时不会触发
基于father镜像构建son镜像时,会触发