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
指定在容器内运行什么命令。
当你运行一个镜像并生成一个容器时,你在底层的层上添加了一个新的可写层,也称为容器层。对运行中的容器所做的所有更改,如写入新文件、修改现有文件和删除文件,都会写入这个可写容器层。
额外资源
- Dockerfile 参考
- 更多关于自动构建
- 创建 Docker 官方镜像的指导原则
- 使用 Docker 容器化 Node.js Web 应用的最佳实践
- 更多关于基础镜像
- 更多关于镜像层以及 Docker 如何构建和存储镜像。
Docker 官方镜像的示例
这些官方镜像具有示范性的 Dockerfile: