Dockerfile常用指令

一、指令集

ADD

ADD

添加本地或远程文件和目录。

ARG

ARG

使用构建时变量,唯一可以位于 FROM 之前的指令。(不支持环境变量)

CMD

CMD

指定默认命令。(不支持环境变量)

COPY

COPY

复制文件和目录。

ENTRYPOINT

ENTRYPOINT

指定默认可执行文件。(不支持环境变量)

ENV

ENV

设置环境变量。更改变量的值仅在后续指令中生效。

EXPOSE

EXPOSE

描述您的应用程序正在侦听哪些端口。

FROM

FROM

FROM [--platform=<platform>] <image> [AS <name>]
FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]
FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]

从基础镜像创建一个新的构建阶段,可以在单个 Dockerfile 中出现多次,以创建多个映像或使用一个构建阶段作为另一个构建阶段的依赖项,可以通过将 AS name 添加到 FROM 指令来为新的构建阶段指定名称,tag 或 digest 值是可选的。如果省略其中任何一个,构建器默认采用 latest 标记。如果构建器找不到 tag 值,则会返回错误。

HEALTHCHECK

HEALTHCHECK

在启动时检查容器的运行状况。(不支持环境变量)

LABEL

LABEL

将元数据添加到图像。

MAINTAINER

MAINTAINER

指定图像的作者。(不支持环境变量)

ONBUILD

ONBUILD

指定在构建中使用映像时的说明。

RUN

RUN

# Shell form:
RUN [OPTIONS] <command> ...
# Exec form:
RUN [OPTIONS] [ "<command>", ... ]

执行构建命令(不支持环境变量),指令的缓存在下一次​​构建期间不会自动失效,可以使用 --no-cache 标志使 RUN 指令的缓存失效,例如 docker build --no-cache。

可使用的[OPTIONS]:

–mount
RUN --mount=[type=<TYPE>][,option=<value>[,option=<value>]...]
TYPE
bind

绑定挂载上下文目录(只读)。

  • target
cache

挂载临时目录以缓存编译器和包管理器的目录。

tmpfs

在构建容器中安装 tmpfs 。

secret

允许构建容器访问安全文件(例如私钥),而无需将其烘焙到映像中。

ssh

允许构建容器通过 SSH 代理访问 SSH 密钥,并支持密码短语。

–network
–security

SHELL

SHELL

设置图像的默认外壳。(不支持环境变量)

STOPSIGNAL

STOPSIGNAL

指定退出容器的系统调用信号。

USER

USER

设置用户和组 ID。

VOLUME

VOLUME

创建卷挂载。

WORKDIR

WORKDIR

更改工作目录。

二、解析器指令

syntax

# syntax=[remote image reference]

用于构建的 Dockerfile 语法版本。如果未指定,BuildKit 将使用 Dockerfile 前端的捆绑版本。

eg

# syntax=docker/dockerfile:1
# syntax=docker.io/docker/dockerfile:1
# syntax=example.com/user/repo:tag@sha256:abcdef...

escape

用于转义 Dockerfile 中的字符的字符。如果未指定,默认转义字符为 \

eg

# escape=\

Or

# escape=`

三、环境变量

${variable:-word}

如果设置了variable,结果为word;

${variable:+word}

如果没设置variable,结果为word,否则为空字符串;

${variable#pattern}

从 variable 中删除 pattern 的最短匹配,从字符串的开头查找;

eg

 str=foobarbaz echo ${str#f*b}     # arbaz

${variable##pattern}

从 variable 中删除 pattern 的最长匹配项,从字符串的开头查找;

eg

str=foobarbaz echo ${str##f*b}    # az

${variable%pattern}

从 variable 中删除 pattern 的最短匹配,从字符串末尾向后查找;

eg

string=foobarbaz echo ${string%b*}    # foobar

${variable%%pattern}

从 variable 中删除 pattern 的最长匹配项,从字符串末尾向后查找;

eg

string=foobarbaz echo ${string%%b*}   # foo

${variable/pattern/replacement}

将 variable 中第一次出现的 pattern 替换为 replacement;

eg

string=foobarbaz echo ${string/ba/fo}  # fooforbaz

${variable//pattern/replacement}

将 variable 中出现的所有 pattern 替换为 replacement;

eg

string=foobarbaz echo ${string//ba/fo}  # fooforfoz

三、注意事项

1.指令不区分大小写。
2.Dockerfile必须以FROM开头,前面只能有一个或多个ARG指令。
3.pattern 是一个全局模式,其中 ? 匹配任何单个字符, * 匹配任意数量的字符(包括零)。要匹配文字 ? 和 * ,请使用反斜杠转义: ? 和 *,您可以通过在变量前添加 \ 来转义整个变量名称:例如, $foo 或 ${foo} 将转换为 $foo 并且 ${foo} 分别是文字。

  • 30
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值