0Pricing
DevOps Bootcamp · 课时

理解 Dockerfile

学习 Dockerfile 中用于定义镜像构建方式的语法和常用指令

理解 Dockerfile 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

什么是 Dockerfile?

假设您有一份烘焙蛋糕的食谱。Dockerfile 与它非常相似!它是一个纯文本文件,包含 Docker 自动构建 Docker 镜像所需的全部指令。

您不是在混合食材,而是在告诉 Docker 要使用哪个基础操作系统、要安装哪些软件,以及如何在镜像中设置应用。

理解 Dockerfile — 插图 1

优势:自动化构建

Dockerfile 能为您的开发流程带来许多优势:

  • 自动化:不再需要手动执行步骤!Docker 每次都能一致地构建镜像。
  • 版本控制:Dockerfile 属于代码,因此您可以使用 Git 跟踪更改。
  • 可复现性:任何拥有 Dockerfile 的人都能构建出完全相同的镜像。
  • 透明性:您可以准确了解镜像中包含的内容。

Dockerfile 基本结构

Dockerfile 是一组指令,会从上到下按顺序执行。每条指令都会在镜像中创建一个新的层。

基本语法很简单:

INSTRUCTION arguments

注释以 # 开头,就像许多编程语言一样。Docker 指令不区分大小写,但通常约定使用大写。

使用 FROM 选择基础镜像

每个 Dockerfile 都必须以 FROM 指令开头。它指定新镜像构建所基于的基础镜像。基础镜像通常包含操作系统(例如 Alpine Linux),有时还包含预安装的软件。

您可以把它想象成选择起点——一块空白画布,或一块已经涂有一些基本颜色的画布。

FROM alpine:latest

使用 RUN 执行命令

RUN 指令用于在镜像构建过程中执行命令。您可以在这里安装软件包、创建目录或编译代码。

每条 RUN 命令都会创建一个新层,因此使用 && 组合命令可以帮助减小镜像大小。

RUN apk update && apk add git

使用 CMD 设置默认命令

CMD 指令为正在执行的容器提供默认命令或参数。与 RUN 不同,CMD 命令会在容器启动时执行,而不是在构建期间执行。

如果您在运行容器时指定命令(例如 docker run my-image ls),该命令会覆盖 CMD 指令。

CMD ["echo", "Hello from container!"]

使用 COPY 添加文件

COPY 指令会将宿主机(即构建镜像的计算机)中的新文件或目录复制到 Docker 镜像文件系统中的指定路径。

通常更推荐使用它而不是 ADD,因为它更加透明,并且只会复制本地文件。

COPY ./app /usr/src/app

工作目录与环境变量

WORKDIR 会为其后出现的 RUN、CMD、ENTRYPOINT、COPY 和 ADD 指令设置工作目录。它能让 Dockerfile 更加简洁。

ENV 用于设置环境变量。这些变量可供 Dockerfile 中后续的指令使用,也可供正在运行的容器使用。

WORKDIR /app
ENV PORT=8080

使用 EXPOSE 声明端口

EXPOSE 指令会告知 Docker,容器在运行时会监听指定的网络端口。但它不会实际发布该端口。

您可以把它看作文档说明。若要让容器外部能够访问该端口,需要在 docker run 中使用 -p 标志。

EXPOSE 80
EXPOSE 443

您的第一个简单 Dockerfile

让我们把所有内容组合起来!下面是一个基本 Dockerfile,它会设置 Alpine Linux 镜像、安装一个软件包,并定义默认命令。

要构建此镜像,请将文件以 Dockerfile 为名保存到空目录中,然后在终端运行 docker build -t my-simple-app .。

FROM alpine:latest

LABEL maintainer="CoddyKit"

RUN apk update && apk add --no-cache bash

WORKDIR /app

CMD ["bash", "-c", "echo 'Hello from my custom Alpine image!' && sleep 3600"]

Dockerfile 指令测验

测试一下您的知识!以下哪些指令会在镜像构建过程中执行,并直接修改镜像的内容或结构?

回顾:Dockerfile 基础

您在理解 Docker 镜像方面迈出了一大步!我们了解到,Dockerfile 是包含镜像构建指令的文本文件,并且具有自动化和可复现性等重要优势。

本节介绍的关键指令:

  • FROM:定义基础镜像。
  • RUN:在构建期间执行命令。
  • CMD:设置运行中容器的默认命令。
  • COPY:将文件从宿主机添加到镜像。
  • WORKDIR、ENV、EXPOSE:配置镜像和容器环境。

常见问题解答

「理解 Dockerfile」课时是免费的吗?

是的 — 「理解 Dockerfile」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「理解 Dockerfile」这节课中我会学到什么?

学习 Dockerfile 中用于定义镜像构建方式的语法和常用指令 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「理解 Dockerfile」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 理解 Dockerfile
  2. 创建自定义 Docker 镜像
  3. 镜像分层与优化
  4. 多阶段构建与更小的镜像
← 返回 DevOps Bootcamp