常用指令详解(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 四个核心指令,可以帮助开发者高效构建镜像,并保持镜像体积小、构建快速且易于维护。
相关内容
- 构建自定义 Registry 本章节介绍如何搭建和管理 Docker 私有 Registry,包括部署自定义 Registry、配置存储与访问权限、镜像推送与拉取流程,以及安全与备份策略,满...
- 与 Kubernetes 的比较与协作 本章节对比 Docker 与 Kubernetes 的异同点,并讲解两者的协作方式,包括容器管理、编排、服务发现、部署流程和最佳实践,帮助理解容器生态系统中的应...
- Rootless Docker 与安全边界 本章节介绍 Rootless Docker 的使用方法及安全边界管理,包括非 root 容器运行原理、配置步骤、权限限制和网络隔离策略,提升容器安全性并降低宿主...
- 常用命令速查表 本章节提供 Docker 常用命令速查表,包括镜像管理、容器操作、网络配置、卷管理、日志查看及调试命令,帮助开发者快速查找和使用 Docker 命令,提高容器管...
- 参考文档与学习资源 本章节整理 Docker 官方文档、社区资源、教程和示例项目,帮助开发者系统学习 Docker 技术,掌握容器化应用的构建、运行、管理和优化方法。
- 示例项目与练习 本章节提供 Docker 示例项目和练习,包括容器化应用部署、Docker Compose 多服务编排、镜像优化、网络配置和存储管理,帮助开发者通过实战加深对...