插件窝 干货文章 dockerfile中最常见的指令是什么

dockerfile中最常见的指令是什么

Dockerfile 示例 指令 作用 964    来源:    2025-04-08

Dockerfile 中最常见的指令及其作用如下(按使用频率和重要性排序):


1. FROM

作用:指定基础镜像(必须作为第一条指令)。
示例

FROM ubuntu:20.04
FROM python:3.9-slim

2. RUN

作用:执行命令并创建新的镜像层(常用于安装软件、配置环境)。
示例

RUN apt-get update && apt-get install -y curl
RUN pip install flask

3. COPY / ADD

作用:将文件/目录从主机复制到镜像中。
- COPY:仅复制本地文件。
- ADD:支持自动解压压缩包或从URL下载(推荐优先用 COPY)。
示例

COPY ./app /app
ADD https://example.com/file.tar.gz /tmp/

4. WORKDIR

作用:设置工作目录(后续指令的相对路径基于此目录)。
示例

WORKDIR /app

5. EXPOSE

作用:声明容器运行时监听的端口(需配合 docker run -p 映射)。
示例

EXPOSE 80
EXPOSE 443

6. CMD / ENTRYPOINT

作用:定义容器启动时的默认命令。
- CMD:可被 docker run 覆盖。
- ENTRYPOINT:通常用于固定入口命令。
示例

CMD ["python", "app.py"]
ENTRYPOINT ["nginx", "-g", "daemon off;"]

7. ENV

作用:设置环境变量(可被后续指令或容器运行时使用)。
示例

ENV NODE_ENV=production
ENV APP_PORT=8080

8. ARG

作用:定义构建时的变量(仅在构建阶段有效)。
示例

ARG VERSION=latest
FROM alpine:$VERSION

9. VOLUME

作用:声明匿名数据卷(持久化数据)。
示例

VOLUME ["/data"]

10. USER

作用:指定运行后续指令的用户(提升安全性)。
示例

USER nobody

其他常见指令

  • LABEL:添加元数据(如维护者信息)。
  • HEALTHCHECK:定义容器健康检查。
  • ONBUILD:延迟执行指令(用于基础镜像定制)。

最佳实践建议

  1. 多阶段构建:减少最终镜像大小(使用多个 FROM 指令)。
  2. 合并 RUN 命令:减少镜像层数(用 && 连接命令)。
  3. 使用 .dockerignore:忽略不需要的文件(类似 .gitignore)。

示例完整 Dockerfile

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]

掌握这些指令即可覆盖 90% 的日常场景!