Skip to content

13、Docker构建镜像之Dockerfile

1、Dockerfile是什么

Dockerfile是Docker镜像的构建文件,它包含了一系列指令和参数,用于定义如何构建一个Docker镜像。通过Dockerfile,我们可以将应用程序和其依赖的组件打包到一个独立的镜像中,方便在不同环境中部署和运行。

2、使用Dockerfile的好处

重复性:Dockerfile可以定义应用程序镜像的构建过程,从而实现镜像构建的重复性和可预测性。使用Dockerfile可以确保在不同的环境中生成相同的镜像,避免了手动配置和部署带来的不确定性和错误。

可维护性:Dockerfile是一种文本文件,易于维护和管理。通过Dockerfile,我们可以记录和跟踪应用程序的构建过程,便于排查和解决问题。

可分享性:Dockerfile可以用于构建镜像,并将镜像分享给其他人使用。通过Dockerfile,其他人可以轻松地了解镜像的构建过程,并根据需要进行修改和定制。

可扩展性:Dockerfile可以通过多个层次的构建过程实现镜像的分层管理。通过分层管理,我们可以在应用程序镜像中定制不同的组件和版本,便于应对不同的需求和场景。

3、Dockerfile的组成

Dockerfile由一行行命令语句组成,并且支持以#开头的注释行。 一般而言,Dockerfile可以分为四部分

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 启动时执行指令

4、Dockerfile指令一览表

指令说明
FROM指定基础镜像
MAINTAINER指定维护者信息,已经过时,可以使用LABEL maintainer=xxx 来替代
LABEL指定维护者信息 maintainer=xxx auth=xueqimiao a=b (语法 k=v )
RUN运行命令 代表镜像构建过程中运行的命令
CMD指定启动容器时默认的命令 容器启动时要执行的命令
ENTRYPOINT指定镜像的默认入口.运行命令
EXPOSE声明镜像内服务监听的端口
ENV指定环境变量,可以在docker run的时候使用-e改变 会被固话到image的config里面
ADD复制指定的src路径下的内容到容器中的dest路径下,src可以为url会自动下载,可以为tar文件,会自动解压
COPY复制本地主机的src路径下的内容到镜像中的dest路径下,但不会自动解压等
LABEL指定生成镜像的元数据标签信息
VOLUME创建数据卷挂载点
USER指定运行容器时的用户名或UID
WORKDIR配置工作目录,为后续的RUN、CMD、ENTRYPOINT指令配置工作目录
ARG指定镜像内使用的参数(如版本号信息等),可以在build的时候,使用--build-args改变
OBBUILD配置当创建的镜像作为其他镜像的基础镜像是,所指定的创建操作指令
STOPSIGNAL容器退出的信号值
HEALTHCHECK健康检查
SHELL指定使用shell时的默认shell类型