常用指令详解(FROM/COPY/RUN/CMD)
Dockerfile 中的指令定义了镜像构建过程和容器运行行为。本节详细讲解四个核心指令的用法与实践技巧。
1. FROM 指令
- 用于指定基础镜像,是 Dockerfile 的首行指令
- 支持官方镜像或自定义镜像
- 可指定版本标签,保证镜像一致性
示例:
FROM ubuntu:22.04
FROM node:20-alpine
`
- 多阶段构建也使用多个 FROM:
FROM golang:1.21 AS builder
FROM alpine:latest
2. COPY 指令
- 将宿主机文件或目录复制到镜像中
- 语法:
COPY <源路径> <目标路径>
示例:
COPY ./app /app
COPY requirements.txt /app/
- COPY 不支持 URL
- 对于远程资源,使用 ADD 指令
3. RUN 指令
- 在镜像构建阶段执行命令
- 常用于安装依赖或配置环境
示例:
RUN apt-get update && apt-get install -y python3
RUN npm install --global yarn
- RUN 会生成新的镜像层,建议合并命令减少层数
4. CMD 指令
-
指定容器启动时的默认命令
-
可以被
docker run命令行参数覆盖 -
两种格式:
- exec 格式(推荐):
CMD ["python3", "app.py"]
- shell 格式:
CMD python3 app.py
- CMD 与 ENTRYPOINT 配合使用,实现更灵活的容器启动
5. 使用示例
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python3", "main.py"]
- 构建镜像:
docker build -t mypythonapp .
- 启动容器:
docker run -d -p 5000:5000 mypythonapp
理解 FROM、COPY、RUN、CMD 四个核心指令,可以帮助开发者高效构建镜像,并保持镜像体积小、构建快速且易于维护。