3Dockerfile镜像制作,镜像分层机制
dockerfile制作镜像
Dockerfile 本质上就是通过一系列指令,在一个基础镜像(可以理解为一个 “小型系统” 或 “初始环境”)的基础上,逐步添加文件、安装软件、配置环境、设置启动命令等,最终构建出一个包含特定功能的新镜像。
构建镜像基本语法
docker build -f 指定dockerfile文件 -t 镜像名:版本 .
注意:构建镜像一般是在 Dockerfile 文件所在的目录去构建的
Dockerfile文件中指令
1. 基础镜像指令
FROM
作用:指定基础镜像(必须是 Dockerfile 的第一条指令,除了注释)。- 格式:
FROM <镜像名>:<标签>
示例:dockerfile
FROM ubuntu:22.04 # 基于 Ubuntu 22.04 构建 FROM openjdk:8-jre # 基于 OpenJDK 8 的 JRE 版本构建
2. 镜像元数据指令
LABEL
作用:为镜像添加元数据(如作者、描述等),便于管理。- 格式:
LABEL <key>=<value> <key>=<value> ...
示例:dockerfile
LABEL maintainer="dev@example.com" # 维护者信息 LABEL description="A test image for Java app" # 镜像描述
3. 文件操作指令
-
COPY
作用:将主机的文件 / 目录复制到容器镜像中(仅支持相对路径,源路径是构建上下文内的路径)。 -
格式:
COPY <源路径> <容器内目标路径>
示例:dockerfile
COPY app.jar /app/ # 将主机当前目录的 app.jar 复制到容器的 /app/ 目录 COPY ./config /etc/config # 复制主机的 config 目录到容器的 /etc/config
-
ADD
作用:类似COPY
,但支持自动解压压缩包(如.tar
、.zip
)和下载 URL 资源(不推荐,优先用COPY
+wget
)。示例:dockerfile
ADD app.tar.gz /app/ # 将主机的 app.tar.gz 复制到容器并自动解压到 /app/
4. 执行命令指令
- <