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