Dockerfile的介绍与使用
发布日期:2021-05-15 07:34:45 浏览次数:26 分类:精选文章

本文共 2060 字,大约阅读时间需要 6 分钟。

Dockerfile 是构建 Docker 镜像的核心文件,基于一系列指令定义了镜像的结构和执行流程。以下是 Dockerfile 的详细介绍与使用方法。

Dockerfile 格式

Dockerfile 由一系列从上至下的指令构成,每个指令后跟必要的参数。文件格式如下:

# parser directives or commentsFROM <镜像名>[:/<标签>][ARG <变量名>[=<默认值>]][WORKDIR <工作目录>]COPY [--chown=用户:组] <源路径>... <目标路径>RUN <shell命令> 或 ["可执行文件", "参数1", "参数2"] (exec 格式)CMD <shell命令> 或 ["可执行文件", "参数1", "参数2"] (exec 格式)[EXPOSE <端口>[/协议>]][ENTRYPOINT ["可执行文件", "参数1", "参数2"] 或 <shell命令>][ENV <键>=<值>]...

Dockerfile 指令

以下是 Dockerfile 中常用的重要指令及其作用:

FROM

用于指定镜像的基础镜像。格式为:

FROM [--platform=
<平台>
] <镜像名>[:<标签>] [AS <镜像别名>]
  • 平台选项可为linux/amd64、linux/arm64、windows/amd64。
  • 提供了多个镜像创建选项,可用于链式构建或创建依赖镜像。

RUN

运行构建镜像时的shell命令或exec格式命令。格式为:

RUN <shell命令> 或 ["可执行文件", "参数1", "参数2"] (exec 格式)
  • 支持新线式命令或传递参数的exec格式。
  • 支持逐行命令,使用斜杠扩展。

CMD

指定镜像运行时的默认命令。格式为:

CMD <shell命令> 或 ["可执行文件", "参数1", "参数2"] (exec 格式)
  • dockerfile 只能有一个CMD指令,且只能是最后一个。
  • 支持与ENTRYPOINT配合,为默认命令提供参数。

LABEL

添加镜像元数据,格式为:

LABEL <键>=<值> [<键>=<值> ...]
  • 支持多个键值对。
  • 值中支持跨行,使用双引号或斜杠标记。

EXPOSE

声明镜像中的服务端口,格式为:

EXPOSE <端口>[/协议>]
  • 管理端口,需手动发布使用-docker run -p或-P选项。

ENV

设置镜像环境变量,格式为:

ENV <键>=<值>
  • 环境变量会随镜像运行封存到容器中。
  • 值中支持空格或转义字符。

COPY

从源路径拷贝文件或目录到镜像文件系统,格式为:

COPY [--chown=用户:组] <源路径>... <目标路径> 或 ["源路径", ..., "目标路径"]
  • 支持通配符和路径转义。
  • 源路径必须在构建上下文中,文件URL下载需目标路径以"/"结尾。

ENTRYPOINT

定义镜像运行时的执行命令,格式为:

ENTRYPOINT ["可执行文件", "参数1", "参数2"] 或 <shell命令>
  • 支持exec和shell格式。
  • 参数可被docker run override(--override-file)覆盖。

USER

指定运行命令的用户或组,格式为:

USER <用户>[:<组>] 或 USER UID:GID
  • 设置为镜像运行时使用的有效用户。

WORKDIR

为命令设置工作目录,格式为:

WORKDIR <工作目录>
  • 工作目录可用于COPY、ADD、RUN等指令。

ARG

定义构建镜像时可用的变量,格式为:

ARG <变量名>[=<默认值>]
  • 变量只用于镜像构建,在最终镜像中不存在。
  • ENV变量可覆盖ARG变量。

ONBUILD

在镜像被用于构建其他镜像时执行触发指令,格式为:

ONBUILD <触发命令>

-触发指令,在目标镜像的FROM后立即执行。

STOPSIGNAL

定义容器退出信号,格式为:

STOPSIGNAL signal_number(如9)

HEALTHCHECK

定义容器健康检查规则,格式为:

HEALTHCHECK --interval=seconds [--timeout=seconds] [--start-period=seconds] [--retries=count] ["CMD-SHELL", "命令"], ["退出状态码"]

SHELL

设置镜像的shell解释器,默认为Linux的/bin/sh和Windows的cmd。

镜像构建

使用docker build命令构建镜像,格式为:

docker build [OPTIONS] PATH | URL | _

常用选项:

  • -f:指定dockerfile路径。
  • -t:标记镜像名称和标签。

通过合理设计Dockerfile,可以自动化构建符合需求的镜像,并通过ARG、ENV参数支持镜像配置的灵活性。

上一篇:构建docker基础镜像并部署LNMP网站平台
下一篇:docker容器的网络访问

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年05月04日 17时03分49秒