dockerfile

dockerfile 笔记

FROM

指定基础镜像。每个 Dockerfile 必须以 FROM 指令开始(除了 scratch)

多个构建阶段

构建阶段
  1. 每个 FROM 指令开始一个新的构建阶段。
  2. 在每个阶段中,你可以执行各种操作(如安装依赖、复制文件、运行构建脚本等)。
最终阶段:
  1. 最终镜像是 Dockerfile 中最后一个 FROM 指令定义的阶段。
  2. 在最后一个阶段,你可以选择性地从之前的阶段复制文件或目录到最终镜像中。
    3.只有最后一个阶段的文件和设置会被包含在最终生成的 Docker 镜像中。

LABEL

说明

添加元数据到镜像中,如维护者、版本等

执行时机

在镜像构建的任何阶段,都可以用来添加元数据

LABEL maintainer="John Doe <john.doe@example.com>"

MATNTAINER (已弃用)

说明
  1. 镜像是谁写的 名字+邮箱
  2. 指定镜像的维护者。已被 LABEL 替代。
执行时机

在镜像构建的初期,用于添加元数据。

示例
MAINTAINER John Doe <john.doe@example.com>   

RUN

说明

执行命令并将其结果作为新层添加到镜像中。常用于安装软件或配置环境。

执行时机

在镜像构建过程中,通常用于安装软件、执行配置脚本等。

示例
RUN apt-get update && apt-get install -y \
    curl \
    git

CMD

说明

指定容器启动时默认执行的命令。CMD 提供了默认的命令,但可以在 docker run 时覆盖。

执行时机

当容器启动时,CMD 指定的命令会被执行。

示例
CMD ["node", "app.js"]

ENTRYPOINT

说明

指定容器启动时要执行的命令,并且不会被 docker run 的参数覆盖。CMD 可以用来提供默认参数。

执行时机

当容器启动时,ENTRYPOINT 指定的命令会被执行。

示例
ENTRYPOINT ["node", "app.js"]

COPY

说明

将文件或目录从主机复制到镜像的文件系统中。

执行时机

在镜像构建过程中,将本地文件或目录复制到镜像中。

示例
COPY . /app

ADD

说明

类似于 COPY,但支持从 URL 下载和自动解压归档文件。

执行时机

在镜像构建过程中,类似于 COPY,但可以处理 URL 和压缩文件。

示例
ADD http://example.com/file.tar.gz /app/

VOLUME

说明

创建一个挂载点,并将其标记为数据卷。数据卷可以在容器之间共享,并且可以在容器停止后保留数据。

执行时机 在容器运行时,定义数据卷的位置。
示例
VOLUME ["/data"]

WORKDIR

说明

设置工作目录。所有后续的 RUN, CMD, ENTRYPOINT, COPY, 和 ADD 指令将在该目录中运行。

执行时机

在镜像构建过程中,设置后续命令的工作目录。

示例
WORKDIR /app

USER

说明

设置运行容器时使用的用户。

执行时机

在容器运行时,设置执行命令的用户。

示例
USER node

EXPOSE

说明

声明容器监听的网络端口。此指令不会实际打开端口,只是用于文档目的和配置网络。

执行时机

在构建镜像时,声明容器的端口。

示例
EXPOSE 80

ENV

说明

设置环境变量。可以在容器运行时访问这些变量。

执行时机

在镜像构建过程中设置环境变量。

示例
ENV NODE_ENV=production

ARG

说明

定义在构建时可用的变量。ARG 变量的值仅在构建过程中有效。

执行时机

在镜像构建过程中,可以在 RUN 指令中使用。

示例
ARG APP_VERSION=1.0

ONBUILD

说明

指定当这个镜像被用作其他镜像的基础镜像时要执行的命令。

执行时机

当基于此镜像构建新的镜像时,ONBUILD 指令会被执行。

示例
ONBUILD RUN echo "This is an ONBUILD trigger"

STOPSIGNAL

说明

设置容器停止时使用的系统信号。默认为 SIGTERM。

执行时机

在容器运行时,当容器接收到停止信号时使用。

示例
 STOPSIGNAL SIGINT

HEALTHCHECK

说明

设置健康检查,用于检查容器的健康状态。

执行时机

在容器运行时,定期检查容器的健康状态。

示例
HEALTHCHECK CMD curl --fail http://localhost/ || exit 1

SHELL

说明

更改 RUN 指令使用的默认 shell。

执行时机

在镜像构建过程中,指定 RUN 指令使用的 shell。

示例
SHELL ["/bin/bash", "-c"]

总结

每条指令在 Dockerfile 中都有特定的作用和执行时机。理解这些指令的执行顺序和作用,可以帮助你更有效地构建和优化 Docker 镜像。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值