08.Docker镜像构建步骤
问题: Docker镜像构建步骤
👇 点击展开/折叠 面试背诵模板(建议先背这个)
一、构建前的准备
① 安装Docker环境
确保目标环境已安装Docker运行时。可通过官方脚本一键安装主流Linux发行版(CentOS、Ubuntu等),安装后执行docker --version验证。
② 编写Dockerfile
Dockerfile是描述镜像构建过程的文本文件,是构建镜像的“标准化剧本”。它包含一系列指令,每条指令生成镜像的一层。核心指令包括:
FROM:指定基础镜像,必须是Dockerfile中非注释的第一个指令WORKDIR:设置工作目录COPY:拷贝文件或目录到镜像中RUN:在构建过程中执行的命令ENV:设置环境变量EXPOSE:声明容器服务端口CMD:容器启动时执行的命令USER:指定运行用户,避免root权限
③ 准备.dockerignore文件
在构建上下文目录中创建.dockerignore文件,排除.git、node_modules、日志文件等无关内容,避免敏感信息泄露并减小镜像体积。
二、执行构建命令
① 执行docker build
在Dockerfile所在目录执行构建命令:
1 | docker build -t 镜像名:标签 . |
-t:指定镜像标签,格式为名称:标签.:表示构建上下文为当前目录
② 构建流程(Docker Daemon内部)
- Docker Client将上下文(context)中的文件打包发送给Docker Daemon
- Daemon创建临时目录,将上下文文件解压到该目录
- 读取并解析Dockerfile,遍历每条指令
- 为每条指令创建一个临时容器,执行指令后commit为新的镜像层
- 所有层合并生成最终镜像,最后一次commit的ID即为最终镜像ID
③ 缓存机制
Docker默认缓存已有的镜像层。若某层指令与缓存匹配(ADD/COPY还会校验文件checksum),则直接复用缓存,大幅提升构建速度。可通过--no-cache=true禁用缓存。
三、验证与优化
① 验证镜像
1 | docker images | grep 镜像名 |
查看镜像是否成功创建。
② 多阶段构建(生产级优化)
Docker 17.05+支持多阶段构建,通过多个FROM指令分离构建环境和运行环境:
1 | # 第一阶段:构建(完整开发环境) |
最终镜像仅包含运行所需文件,体积显著减小。
③ 生产级最佳实践
- 镜像瘦身:优先使用
slim或alpine基础镜像;清理包管理器缓存 - 安全加固:使用
USER指令切换到非特权用户运行 - 版本管理:采用语义化版本标签(如v1.0.0)和Git提交哈希双重标识
- 分层优化:将频繁变更的操作(如代码复制)放在Dockerfile末尾,最大化利用缓存
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LGQ的博客!