编写 Dockerfile 的最佳实践概述
本主题涵盖构建高效映像的推荐最佳实践和方法。它 为您的 Dockerfile 提供了一般指南,并 为每个 Dockerfile 指令提供了更具体的最佳实践。
什么是 Dockerfile?
Docker 通过读取 Dockerfile 中的指令来自动构建镜像,Dockerfile 是一个文本文件,其中按顺序包含构建给定镜像所需的所有命令。 Dockerfile 遵循特定的格式和指令集,您可以在 Dockerfile 参考中找到这些指令。
Docker 镜像由只读层组成,每个层代表一条 Dockerfile 指令。这些层是堆叠在一起的,每一层都是与前一层的变化的增量。
# syntax=docker/dockerfile:1
FROM ubuntu:22.04
COPY . /app
RUN make /app
CMD python /app/app.py
在上面的示例中,每条指令创建一层:
FROM
从 Docker 镜像创建一个层ubuntu:22.04
。COPY
从 Docker 客户端的当前目录添加文件。RUN
使用 构建您的应用程序make
。CMD
指定要在容器内运行的命令。
当您运行图像并生成容器时,您将在底层层之上添加一个新的可写层,也称为容器层。对正在运行的容器所做的所有更改,例如写入新文件、修改现有文件和删除文件,都会写入此可写容器层。
其他资源
- Dockerfile 参考
- 有关自动化构建的更多信息
- 创建 Docker 官方镜像的指南
- 使用 Docker 容器化 Node.js Web 应用程序的最佳实践
- 有关基础图像的更多信息
- 有关图像层以及 Docker 如何构建和存储图像的更多信息。
Docker 官方镜像示例
这些官方镜像具有示例性的 Dockerfile: