首先dockerfile是用来快速构建镜像的配置文件
构建一个简单的java服务,例:
FROM openjdk:11
ADD ./app /usr/local/myserver
WORKDIR /usr/local/myserver
CMD ["java", "-jar", "myserver.jar"]
- FROM
格式为FROM image或FROM image:tag。
第一条指令必须为FROM指令。并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)。 - MAINTAINER(非必须)
格式为MAINTAINER name,指定维护者信息。 - RUN
格式为RUN command或RUN [“executable”, “param1”, “param2”]。
前者将在shell终端中运行命令,即/bin/sh -c;后者则使用exec执行。指定使用其他终端可以通过第二种方式实现,例如RUN ["/bin/bash", “-c”, “echo hello”]。每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像。当命令较长时可以使用\来换行。 - ADD
格式为ADD src dest。
该命令将复制指定的src到容器中的dest。其中src可以是Dockerfile所在目录的一个相对路径(文件或目录);也可以是一个URL;还可以是一个tar文件(自动解压为目录) - WORKDIR
格式为WORKDIR /path/to/workdir。为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。 - CMD
支持三种格式:CMD [“executable”,“param1”,“param2”]使用exec执行,推荐方式。 CMD command param1 param2在/bin/sh中执行,提供给需要交互的应用。CMD [“param1”,“param2”]提供给ENTRYPOINT的默认参数。
指定启动容器时执行的命令,每个Dockerfile只能有一条CMD命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器时候指定了运行的命令,则会覆盖掉CMD指定的命令。