Dockerfile 中常用的指令有哪些?

推荐答案

在 Dockerfile 中,常用的指令包括:

  • FROM:指定基础镜像。
  • RUN:执行命令并创建新的镜像层。
  • CMD:指定容器启动时默认执行的命令。
  • LABEL:为镜像添加元数据。
  • EXPOSE:声明容器运行时监听的端口。
  • ENV:设置环境变量。
  • ADD:将文件、目录或远程文件 URL 复制到镜像中。
  • COPY:将文件或目录复制到镜像中。
  • ENTRYPOINT:指定容器启动时执行的主命令。
  • VOLUME:创建挂载点或声明卷。
  • USER:指定运行容器时的用户名或 UID。
  • WORKDIR:设置工作目录。
  • ARG:定义构建时的变量。
  • ONBUILD:指定当镜像被用作其他镜像的基础镜像时执行的指令。
  • HEALTHCHECK:定义容器健康检查的方式。

本题详细解读

FROM

FROM 指令用于指定基础镜像。它是 Dockerfile 中的第一条指令,后续的所有操作都基于这个基础镜像。例如:

RUN

RUN 指令用于在镜像构建过程中执行命令。每条 RUN 指令都会在当前镜像的基础上创建一个新的层。例如:

CMD

CMD 指令用于指定容器启动时默认执行的命令。一个 Dockerfile 中只能有一个 CMD 指令,如果有多个,只有最后一个会生效。例如:

LABEL

LABEL 指令用于为镜像添加元数据,通常以键值对的形式出现。例如:

EXPOSE

EXPOSE 指令用于声明容器运行时监听的端口。它并不会实际发布端口,只是作为文档说明。例如:

ENV

ENV 指令用于设置环境变量。这些变量可以在后续的指令中使用。例如:

ADD

ADD 指令用于将文件、目录或远程文件 URL 复制到镜像中。它比 COPY 更强大,支持自动解压 tar 文件和从 URL 下载文件。例如:

COPY

COPY 指令用于将文件或目录从构建上下文复制到镜像中。它比 ADD 更简单,不支持自动解压和远程 URL。例如:

ENTRYPOINT

ENTRYPOINT 指令用于指定容器启动时执行的主命令。与 CMD 不同,ENTRYPOINT 不会被覆盖。例如:

VOLUME

VOLUME 指令用于创建挂载点或声明卷。它可以将容器内的目录挂载到宿主机的目录上。例如:

USER

USER 指令用于指定运行容器时的用户名或 UID。例如:

WORKDIR

WORKDIR 指令用于设置工作目录。后续的 RUNCMDENTRYPOINT 等指令都会在这个目录下执行。例如:

ARG

ARG 指令用于定义构建时的变量。这些变量可以在构建时通过 --build-arg 参数传递。例如:

ONBUILD

ONBUILD 指令用于指定当镜像被用作其他镜像的基础镜像时执行的指令。例如:

HEALTHCHECK

HEALTHCHECK 指令用于定义容器健康检查的方式。它可以指定一个命令来检查容器的健康状态。例如:

纠错
反馈