Dockerfile 指令 说明
FROM 指定基础镜像,用于后续的指令构建。
MAINTAINER 指定Dockerfile的作者/维护者。(已弃用,推荐使用LABEL指令)
LABEL 添加镜像的元数据,使用键值对的形式。
RUN 在构建过程中在镜像中执行命令。
CMD 指定容器创建时的默认命令。(可以被覆盖)
ENTRYPOINT 设置容器创建时的主要命令。(不可被覆盖)
EXPOSE 声明容器运行时监听的特定网络端口。
ENV 在容器内部设置环境变量。
ADD 将文件、目录或远程URL复制到镜像中。
COPY 将文件或目录复制到镜像中。
VOLUME 为容器创建挂载点或声明卷。
WORKDIR 设置后续指令的工作目录。
USER 指定后续指令的用户上下文。
ARG 定义在构建过程中传递给构建器的变量,可使用 “docker build” 命令设置。
ONBUILD 当该镜像被用作另一个构建过程的基础时,添加触发器。
STOPSIGNAL 设置发送给容器以退出的系统调用信号。
HEALTHCHECK 定义周期性检查容器健康状态的命令。
SHELL 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令。

以Mariadb为例

vim Dockerfile-mariadb
# -------------------------------------------------------------------
FROM centos:centos7.9.2009
# FROM指令是Dockerfile的第一条指令,用于指定构建新镜像所基于的基础镜像
# centos:centos7.9.2009 表示使用CentOS 7.9.2009版本作为基础镜像
# -------------------------------------------------------------------
MAINTAINER Chinaskills
# MAINTAINER指令用于指定镜像的维护者信息(姓名、邮箱等)
# -------------------------------------------------------------------
RUN rm -rfv /etc/yum.repos.d/*
# RUN指令用于在镜像构建过程中执行命令
# 这里就是在镜像构建过程中执行 rm -rfv /etc/yum.repos.d/*
# -------------------------------------------------------------------
COPY local.repo /etc/yum.repos.d/
# COPY指令用于将本地文件复制到镜像中
# 这里就是将本地的 local.repo 文件复制到镜像中的 /etc/yum.repos.d/ 目录下
# -------------------------------------------------------------------
COPY yum /root/yum
# -------------------------------------------------------------------
ENV LC_ALL en_US.UTF-8
# ENV指令用于设置环境变量
# LC_ALL=en_US.UTF-8 设置系统的本地化环境变量
# -------------------------------------------------------------------
RUN yum -y install mariadb-server
COPY init.sh /opt/
RUN bash /opt/init.sh
# -------------------------------------------------------------------
EXPOSE 3306
# EXPOSE指令用于声明容器运行时监听的端口
# 3306是MySQL/MariaDB数据库的默认端口
# -------------------------------------------------------------------
CMD ["mysqld_safe","--user=root"]
# CMD指令指定容器启动时默认执行的命令
# 这个命令会在容器启动时执行,启动MariaDB数据库服务