Dockerfile介绍
镜像的定制实际上就是定制每一层所添加的配置、文件,可以把每一层修改、安装、构建、操作都写入一个脚本, 这个脚本就是Dockerfile, Dockerfile是由一系列命令和参数构成的脚本,一个Dockerfile里面包含了构建整个image的完整命令。Docker通过docker build从上到下的顺序运行Dockerfile中的一系列命令自动构建image
一般包括:
基础镜像信息(FROM image)
维护者信息(MAINTAINER xxxx)
镜像操作指令(COPY, ADD, RUN, ENV等)
容器启动时执行指令(CMD, ENTRYPOINT)
分类 | 指令 | 说明 |
配置指令 | ARG | 定义创建镜像过程中使用的变量 |
FROM | 指定所创建镜像的基础镜像 | |
LABEL | 为生成的镜像添加元数据标签信息 | |
EXPOST | 声明镜像内服务监听的端口 | |
ENV | 指定环境变量 | |
ENTRYPOINT | 指定镜像的默认入口命令 | |
VOLUME | 创建一个数据卷挂载点 | |
USER | 指定运行容器时的用户名或UID | |
WORKDIR | 配置工作目录 | |
ONBUILD | 创建子镜像时指定自动执行的操作指令 | |
STOPSIGNAL | 指定退出的信号值 | |
HEALTHCHECK | 配置所启动容器如何进行健康检查 | |
SHELL | 指定默认的shell类型 | |
操作指令 | RUN | 运行指定命令 |
CMD | 启动容器时指定默认指定的命令 | |
ADD | 添加内容到镜像 | |
COPY | 复制内容到镜像 |
ARG
定义创建镜像过程中使用的变量
语法格式 |
示例 |
备注 |
ARG <name>[=<default value>] |
ARG image FROM $image |
docker build时,可以通过-build-arg[=]来为变量赋值,当镜像编译成功后,ARG指定的变量将不在存在(ENV指定的变量将在镜像中保留)
如: 创建dockerfile文件,内容如下
ARG image
FROM $image
RUN echo "helloworld"
CMD ["echo", "date"]
执行命令docker build --build-arg image=centos:7 --no-cache
LABEL
为生成的镜像添加元数据标签信息,这些信息可以辅助过滤出特定镜像
语法格式 |
示例 |
备注 |
LABEL <key>=<value> |
LABEL name=test |
一次设置一个 |
LABEL <key>=<value> <keys1>=<value1>... |
LABEL name=test age=10 |
一次设置多个 |
USER
指定运行容器时的用户名或UID,