Skip to content

Dockerfile 概述和编写最佳实践简介

原文:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

本主题涵盖了构建高效镜像的推荐最佳实践和方法。它提供了关于 Dockerfile 的一般指导原则 以及每个 Dockerfile 指令的更具体的 最佳实践

什么是 Dockerfile?

Docker 通过读取 Dockerfile 中的指令来自动构建镜像,Dockerfile 是一个文本文件,包含了构建给定镜像所需的所有命令,这些命令按顺序排列。Dockerfile 遵循特定的格式和一组指令,你可以在 Dockerfile 参考 中找到这些信息。

一个 Docker 镜像由只读层组成,每一层都代表一个 Dockerfile 指令。这些层是堆叠的,每一层都是前一层变化的增量。

dockerfile
# syntax=docker/dockerfile:1

FROM ubuntu:22.04
COPY . /app
RUN make /app
CMD python /app/app.py

在上面的示例中,每个指令都创建了一个层:

  • FROM 创建了一个来自 ubuntu:22.04 Docker 镜像的层。
  • COPY 添加来自您的 Docker 客户端当前目录的文件。
  • RUN 使用 make 构建您的应用程序。
  • CMD 指定在容器内运行什么命令。

当你运行一个镜像并生成一个容器时,你在底层的层上添加了一个新的可写层,也称为容器层。对运行中的容器所做的所有更改,如写入新文件、修改现有文件和删除文件,都会写入这个可写容器层。

额外资源

Docker 官方镜像的示例

这些官方镜像具有示范性的 Dockerfile: