Dockerfile指令

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镜像时,会触发


原文出处:/show_1EF5kDZKpI5z.html