Dockerfile 是构建自定义镜像的「脚本文件」,通过一系列指令定义镜像的构建步骤,替代手动在容器内操作(如安装依赖、配置环境),实现镜像的可重复构建、版本化管理。掌握 Dockerfile 是 Docker 进阶的核心技能,以下从「核心指令」「实战案例」「构建优化」三个维度展开讲解。
一、Dockerfile 核心指令(必学)
Dockerfile 指令按功能可分为「基础配置」「文件操作」「环境设置」「启动命令」四类,每个指令都是大写字母(约定俗成),按执行顺序构建镜像(每一行指令通常对应镜像的一层)。
1. 基础配置指令(定义镜像基础)
FROM:指定基础镜像(必须是 Dockerfile 的第一条指令,除非用ARG定义参数)。
作用:所有自定义镜像都需基于一个已有的基础镜像(如操作系统、语言环境),避免从零构建。
示例:# 基于 Ubuntu 22.04 操作系统 FROM ubuntu:22.04 # 基于 Python 3.11 环境(已包含 Python 解释器) FROM python:3.11-slim # slim 是精简版,体积更小
2. 文件操作指令(复制/添加文件)
-
COPY:将宿主机的文件/目录复制到镜像中(推荐使用,功能简单明确)。
语法:COPY [--chown=用户:组] 宿主机路径 镜像内路径
示例:# 复制当前目录的 app.py 到镜像的 /app 目录 COPY app.py /app/ # 复制当前目录的所有文件(除 .dockerignore 排除的)到镜像的 /app 目录 COPY . /app/ -
ADD:功能类似COPY,但支持额外特性(不推荐轻易使用):- 自动解压压缩包(如
.tar.zip,复制到镜像后会自动解压); - 支持 URL 路径(从网络下载文件到镜像,但不建议,推荐用
RUN wget/curl更灵活)。
示例:
# 复制并自动解压 local.tar.gz 到镜像的 /app 目录(等价于 COPY + 解压) ADD local.tar.gz /app/ - 自动解压压缩包(如
3. 环境配置指令(执行命令/设置环境)
-
RUN:在镜像构建阶段执行命令(如安装依赖、配置环境),执行结果会被打包到镜像中。
语法:- shell 格式:
RUN 命令(默认在/bin/sh -c中执行,支持管道|、变量等);
- shell 格式:

最低0.47元/天 解锁文章
830

被折叠的 条评论
为什么被折叠?



