一、Dockerfile 简介
Dockerfile是一个文本文件,其中包含了一系列指令和配置信息,用于自动化构建Docker镜像。通过Dockerfile,我们可以定义镜像的基础镜像、安装依赖、复制文件、设置环境变量等,从而生成符合我们应用需求的Docker镜像。
二、Dockerfile 的基本结构
Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。
- 基础镜像信息。使用FROM关键字指定基础镜像,这是构建过程的起点。
- 维护者信息。通过MAINTAINER关键字添加,通常包括创建者的名字或邮箱。
- 镜像操作指令。这些指令包括但不限于RUN、COPY、ADD、WORKDIR、CMD、ENTRYPOINT、EXPOSE、ENV等,用于在镜像中执行命令、复制文件或目录、设置工作目录、提供容器启动时的默认命令、定义容器启动时的命令、暴露容器端口、设置环境变量等。
- 容器启动时执行的指令。使用CMD和ENTRYPOINT指定容器启动时要运行的命令。
三、Dockerfile 文件说明
- 基础知识
- Docker以从上到下的顺序运行Dockerfile的指令。
- 为了指定基本映像,第一条指令必须是FROM。
- 一个声明以#字符开头则被视为注释。
- 可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。
- Docker执行DockerFile的大致流程
- Docker从基础镜像运行一个容器
- 执行一条指令并且对于容器做出修改
- 执行类似docker commit的操作提交一个新的镜像层
- Docker再基于刚提交的镜像运行一个新的容器
- 执行DockeFile 中的下一条指令直到所有指令都执行完成
四、Dockerfile 常用的指令。
1. FROM:指定基础镜像,必须为第一个命令
- 格式:
FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>
- 示例:
FROM mysql:5.6
- 注:
tag或digest是可选的,如果不使用这两个值时,会使用latest版本的基础镜像
2. MAINTAINER: 维护者信息
3. RUN用于在镜像容器中执行命令,其有以下两种命令执行方式:
- shell执行格式:
RUN <command>
- exec执行格式:
RUN ["executable", "param1", "param2"]
- 示例:
RUN ["executable", "param1", "param2"]
RUN apk update
RUN ["/etc/execfile", "arg1", "