美文网首页
Dockerfile命令

Dockerfile命令

作者: 王侦 | 来源:发表于2023-07-13 14:06 被阅读0次

1.FROM 指定基础镜像(必选)

所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指定的。而FROM就是指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。

如果没有找到对应服务的镜像,官方镜像中还提供了一些更为基础的操作系统镜像,如 ubuntu、debian、centos、fedora、alpine 等。

FROM <image>:<tag>

FROM scratch是虚拟的概念,并不实际存在,它表示一个空白的镜像。如果你以scratch为基础镜像的话,意味着你不以任何镜像为基础,接下来所写的指令将作为镜像第一层开始存在。对于 Linux 下静态编译的程序来说,并不需要有操作系统提供运行时支持,所需的一切库都已经在可执行文件里了,因此直接FROM scratch会让镜像体积更加小巧。

2.LABEL 设置镜像元数据

使用LABEL指令,可以为镜像设置元数据,例如镜像创建者或者镜像说明。旧版的Dockerfile语法使用MAINTAINER指令指定镜像创建者,但是它已经被弃用了。

LABEL maintainer="cerberus43@gmail.com"
LABEL version="1.0"
LABEL description="This is a test dockerfile"

3.RUN 运行命令

使用RUN指令,可以用来执行命令行的命令。

两种格式:

  • shell格式
  • exec格式

4.COPY 复制文件

目标路径可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用WORKDIR指令来指定)。
目标路径不需要事先创建,如果目录不存在会在复制文件前先行创建缺失目录。
使用 COPY 指令,源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。

5.ADD 更高级的复制文件

ADD 命令和 COPY 的格式和性质基本一致。但是在 COPY 基础上增加了一些功能。

  • 解压压缩文件并把它们添加到镜像中
  • 从 url 拷贝文件到镜像中

尽可能的使用 COPY,因为 COPY 的语义很明确,就是复制文件而已,而 ADD 则包含了更复杂的功能,其行为也不一定很清晰。最适合使用 ADD 的场合,就是所提及的需要自动解压缩的场合。

6.WORKDIR 指定工作目录

使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。

7.ENV 指定容器的环境变量

使用ENV指令,可以设置环境变量,无论是后面的其它指令,如 RUN,还是运行时的应用,都可以直接使用这里定义的环境变量。

8.ARG 指定Dockerfile中的环境变量

ARG:ARG定义的变量用于构建Docker镜像,在把Dockerfile构建成镜像后,ARG定义的变量便不再起作用;

ENV:ENV定义的变量用于容器的环境变量,在Dockerfile里定义后,在容器的运行时是可以使用这个变量的;

9.CMD 指定镜像启动时的命令

CMD给出的是一个容器的默认的可执行体。也就是容器启动以后,默认的执行的命令。重点就是这个默认。意味着,如果docker run没有指定任何的执行命令或者Dockerfile里面也没有ENTRYPOINT,那么,就会使用CMD指定的默认的执行命令执行。同时也从侧面说明了ENTRYPOINT的含义,它才是真正的容器启动以后要执行命令。

10.ENTRYPOINT 指定容器入口命令

ENTRYPOINT才是正统地用于定义容器启动以后的执行体的,其实我们从名字也可以理解,这个是容器的“入口”。

11.EXPOSE 暴露端口

EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。

12.VOLUME 定义匿名卷

VOLUME指令用于暴露任何数据库存储文件,配置文件,或容器创建的文件和目录。强烈建议使用 VOLUME来管理镜像中的可变部分和用户可以改变的部分。

13.ONBUILD

ONBUILD指令可以为镜像添加触发器。其参数是任意一个Dockerfile指令

参考

相关文章

网友评论

      本文标题:Dockerfile命令

      本文链接:https://www.haomeiwen.com/subject/wiauudtx.html