除了之前提到的指令,Dockerfile 还有这些常用指令,覆盖镜像构建的更多场景:
一、镜像构建相关
1. ARG
作用:定义构建时的变量(仅在docker build阶段有效,容器运行时不可用)。
示例:
ARG VERSION=1.0 # 定义变量,默认值1.0
RUN wget https://example.com/app-${VERSION}.tar.gz
构建时传参:docker build --build-arg VERSION=2.0 -t 镜像名 .
2. ONBUILD
作用:给 “基础镜像” 添加触发指令,当该镜像被作为其他镜像的FROM基础时,自动执行ONBUILD后的命令。
示例(基础镜像的 Dockerfile):
ONBUILD COPY app /app # 后续基于此镜像构建时,会自动执行COPY
二、容器配置相关
1. VOLUME
作用:声明容器的挂载卷(持久化数据),避免容器删除时数据丢失。
示例:
VOLUME ["/data"] # 容器启动时,/data会自动挂载为卷
扩展:实际使用时,建议用docker run -v 主机路径:容器路径手动挂载(更灵活)。
2. HEALTHCHECK
作用:定义容器健康检查的命令,Docker 会定期执行以判断容器状态。
示例:
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \ CMD curl -f http://localhost:80 || exit 1
参数:
--interval:检查间隔(默认 30s);
--timeout:检查超时(默认 30s);
--retries:失败重试次数(默认 3)。
三、其他辅助指令
1. LABEL
作用:给镜像添加元数据(如作者、版本),便于管理。
示例:
LABEL maintainer="xxx@example.com" version="1.0" description="Nginx镜像"
查看:docker inspect 镜像名可看到Labels字段。
2. SHELL
作用:指定容器内的默认 Shell(默认是/bin/sh)。
示例:
dockerfile
SHELL ["/bin/bash", "-c"] # 后续RUN指令用bash执行