Dockerfile的常用指令
Docker使用层级的文件系统,Docker和现有的容器技术LXC等相比,优势之一就是Docker提供了镜像管理。对于Docker来说,镜像是静态只读的容器文件系统的快照,Docker中所有的磁盘操作都是对特定的Copy-On-Write文件系统进行的。Dockerfile的每一条指令都只是在镜像上添加一个改动层。Dockerfile指令的一般格式为指令名称参数。
工具/原料
IntelliJ IDEA
常用指令
1、FROM指令支持三种格式:FROM <image>FROM <image>:<tag>FROM <image>@<digest>FROM指令必须指定,且需要在Dockerfile其他指令的前面。指定的基础指令可以是官方远程仓库中的,也可以是位于本地仓库。后续的指令都依赖于该指令指定的image。在同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令。MAINTAINER格式:MAINTAINER <name>用于指定维护者的信息

2、RUN支持两种格式:RUN <command>在shell终端中运行命令,在Linux中默认是/bin/sh -cRUN["executable", "param1", "param2"],使用exec执行,指定其他终端,例如:RUN["/bin/bash", "-c", "echo hello"],该方式会被转成json数组。

3、CMDCMD ["executable", "param1", "param2"],推荐使用该方式CMD["param1", "param2"],为ENTRYPOINT指令提供预设参数CMD command param1 param2在SHELL中执行CMD指令的主要目的是为执行容器提供默认值,每个Dockerfile只有一个CMD命令,如果指定了多个CMD命令,也只会有一条执行,如果启动容器的时候指定了运行的命令,则会覆盖掉CMD指定的命令。

4、LABEL格式为:LABEL <key>=<value><key>=<value><key>=<value>为镜像添加元数据。EXPOSE格式:EXPOSE <port> [<port>...]为Docker容器设置对外的端口号,使用时可以-p选项或者-P选项。映射⼀个端⼝的例子:EXPOSE port1相应的运⾏容器使⽤的命令docker run -p port1 image也可以使⽤-P选项启动docker run -P image映射多个端⼝示例EXPOSE port1 port2 port3相应的运⾏容器使⽤的命令docker run -p port1 -p port2 -p port3 image还可以指定需要映射到宿主机器上的某个端⼝号 docker run -p host_port1:port1 -p host_port2:port2 -p host_port3:port3 image

5、ENV格式:ENV <key> <value> ENV <key>=<value>指定环境变量,会被后续的RUN指令使用,并在容器使用后可以通过docker inspect查看这个环境变量,也可以通过使用docker run --env<key>=<value>来修改环境变量。
6、ADD格式:ADD <src>...<dest> ADD ["<src>", ..."<dest>"]从src目录复制文件到容器的dest目录,src可以是Dockerfile所在目录的相对路径,也可以是一个url,还可以是一个压缩包。注意事项:1. src必须在构建的上下⽂内,不能使⽤例如: ADD ../some/something ,因为 docker build 命令⾸先会将上下⽂路径和其⼦⽬录发送到docker daemon2. 如果src是⼀个URL,同时dest不以斜杠结尾,dest将会被视为⽂件,src对应内容⽂件将会被下载到dest3. 如果src是⼀个URL,同时dest以斜杠结尾,dest将被视为⽬录,src对应内容将会被下载到dest⽬录4. 如果src是⼀个⽬录,那么整个⽬录其下的内容将会被拷⻉,包括⽂件系统元数据5. 如果⽂件是可识别的压缩包格式,则docker会⾃动解压

7、COPY格式为:COPY <src>...<dest>COPY ["<src>", ..."<dest>"], shell中执行复制本地的src到容器的dest,和ADD指令相似,但是COPY不支持URL和压缩包。
8、ENTRYPOINT格式为: ENTRYPO诔罨租磊INT ["executable", "param1", "param2"] ENTRYPOINT command param1 param2 指定Docker容器启动时执⾏的命令,可以多次设置,但是只有最后⼀个有效。VOLUME格式为: VOLUME ["/data"]使容器中的⼀个⽬录具有持久化存储数据的功能,该⽬录可以被容器本身使⽤,也可以共享给其他容器。USER格式为: USER ⽤户名 设置启动容器的⽤户,默认是root⽤户。WORKDIR格式为: WORKDIR /path/to/workdir切换⽬录指令,类似于cd命令,对RUN、CMD、ENTRYPOINT⽣效。ARG格式为: ARG <name>[=<default value>] ARG指令定义⼀个变量。ONBUILD格式为:ONBUILD [INSTRUCTION] 指定当前建⽴的镜像作为其他镜像的基础时,所执⾏的命令。


9、使用docker build -t test1 . 命令进行docker镜像的构建,其中.表示当前路径,构建的时候要保证jar包和Dockerfile文件在同一个文件夹下。构建成功后会看到如下的successful信息。

