Kimi: Dockerfile 是用于构建 Docker 镜像的文本文件,包含一系列指令。以下是 Dockerfile 常用命令 及其功能详解:
1. 基础指令
| 命令 |
说明 |
示例 |
FROM |
指定基础镜像(必须作为首条指令) |
FROM ubuntu:22.04 |
LABEL |
添加元数据(如作者、版本) |
LABEL maintainer="user@example.com" |
WORKDIR |
设置工作目录(后续指令的默认路径) |
WORKDIR /app |
USER |
指定运行容器的用户(默认 root) |
USER nginx |
2. 文件操作
| 命令 |
说明 |
示例 |
COPY |
从构建上下文复制文件到镜像 |
COPY package.json /app/ |
ADD |
类似 COPY,但支持URL和自动解压(优先用 COPY) |
ADD https://example.com/file.tar.gz /tmp/ |
RUN |
在镜像构建时执行命令(生成新层) |
RUN apt-get update && apt-get install -y curl |
3. 环境配置
| 命令 |
说明 |
示例 |
ENV |
设置环境变量 |
ENV PATH=/usr/local/bin:$PATH |
ARG |
定义构建参数(仅构建阶段可用) |
ARG VERSION=1.0 |
EXPOSE |
声明容器监听端口(实际映射需 docker run -p) |
EXPOSE 80/tcp |
4. 容器启动
| 命令 |
说明 |
示例 |
CMD |
容器启动时默认执行的命令(可被 docker run 覆盖) |
CMD ["python", "app.py"] |
ENTRYPOINT |
定义容器启动的固定入口(通常搭配 CMD 提供默认参数) |
ENTRYPOINT ["nginx", "-g", "daemon off;"] |
5. 数据与网络
| 命令 |
说明 |
示例 |
VOLUME |
声明匿名卷(持久化数据) |
VOLUME ["/var/log"] |
HEALTHCHECK |
检查容器健康状态 |
`HEALTHCHECK CMD curl -f http://localhost/ |
6. 多阶段构建(优化镜像大小)
# 阶段一:构建应用
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
# 阶段二:运行应用
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
7. 最佳实践
- 减少层数:合并
RUN 命令(如 apt-get update && apt-get install)。
- 使用
.dockerignore:排除无关文件(如 node_modules、.git)。
- 固定版本:避免使用
latest 标签(如 FROM python:3.11-slim)。
- 最小化镜像:选择轻量级基础镜像(如
alpine 或 distroless)。