当前位置: 首页 > news >正文

docker build命令及参数介绍

文章目录

  • **一、基本语法**
  • **二、核心参数详解**
    • **1. 基础参数**
    • **2. 资源限制参数**
    • **3. 缓存与清理参数**
    • **4. 网络与隔离参数**
    • **5. 高级功能参数**
  • **三、构建上下文(Context)**
  • **四、使用示例**
    • 1. **基础构建**
    • 2. **指定 Dockerfile 路径**
    • 3. **传递构建参数**
    • 4. **多阶段构建**
    • 5. **禁用缓存**
    • 6. **资源限制**
  • **五、注意事项**
    • 1. **构建缓存**
    • 2. **敏感信息**
    • 3. **多阶段构建优化**
  • **六、扩展工具链集成**
    • - **CI/CD 场景**:结合 `--iidfile` 获取镜像 ID,用于后续推送或部署。
    • - **自动化脚本**:通过 `.dockerignore` 和 `--no-cache` 控制构建上下文和缓存策略。

docker build 是 Docker 中用于根据 Dockerfile 构建镜像的核心命令。以下是其详细语法、参数及使用示例的总结:


一、基本语法

docker build [OPTIONS] PATH | URL | -
  • PATH:本地目录路径(包含 Dockerfile 的上下文)。
  • URL:远程 Git 仓库地址(如 github.com/xxx/xxx)。
  • -:从标准输入读取 Dockerfile 内容(较少使用)。

二、核心参数详解

1. 基础参数

参数作用示例
-t, --tag为镜像指定名称和标签(格式:name:tagdocker build -t myapp:v1 .
-f, --file指定 Dockerfile 路径(默认为当前目录下的 Dockerfiledocker build -f ./Dockerfile.dev .
--build-arg传递构建参数(需在 Dockerfile 中通过 ARG 定义)docker build --build-arg HTTP_PROXY=http://proxy.example.com .
--no-cache禁用缓存,强制重新构建所有层docker build --no-cache .
--pull拉取基础镜像的最新版本docker build --pull .
--target多阶段构建时指定目标阶段docker build --target builder .

2. 资源限制参数

参数作用示例
-m, --memory限制构建过程的内存使用docker build -m 2g .
--cpuset-cpus指定可用的 CPU 核心docker build --cpuset-cpus "0,1" .
--shm-size设置 /dev/shm 共享内存大小(默认 64MB)docker build --shm-size=1g .

3. 缓存与清理参数

参数作用示例
--rm构建成功后删除中间容器(默认启用)docker build --rm .
--force-rm无论构建是否成功,强制删除中间容器docker build --force-rm .
--cache-from指定缓存源镜像(用于优化多阶段构建)docker build --cache-from myapp-cache .

4. 网络与隔离参数

参数作用示例
--network设置构建期间的网络模式(默认 defaultdocker build --network host .
--isolation指定容器隔离技术(如 processhypervdocker build --isolation=hyperv .

5. 高级功能参数

参数作用示例
--squash将所有构建层压缩为单一层(实验性功能)docker build --squash .
--iidfile将生成的镜像 ID 写入文件(用于自动化脚本)docker build --iidfile=image.id .

三、构建上下文(Context)

  • 定义:构建过程中 Docker 客户端会将当前目录(或指定路径)下的所有文件作为 构建上下文 发送给 Docker 守护进程。
  • 注意事项
    • 避免使用根目录 / 作为上下文路径,否则会上传整个系统文件。
    • 使用 .dockerignore 文件排除不必要的文件(如 node_modules/.git/),减少传输时间。

四、使用示例

1. 基础构建

docker build -t myapp:v1 .
  • 当前目录(.)作为上下文,生成标签为 myapp:v1 的镜像。

2. 指定 Dockerfile 路径

docker build -f ./Dockerfile.dev -t myapp:dev .

3. 传递构建参数

docker build --build-arg VERSION=2.0 -t myapp:v2 .

4. 多阶段构建

docker build --target builder -t myapp-builder .

5. 禁用缓存

docker build --no-cache -t myapp:v1 .

6. 资源限制

docker build --memory=2g --cpuset-cpus="0,1" -t myapp:v1 .

五、注意事项

1. 构建缓存

  • Docker 会缓存每一步构建结果,若 Dockerfile 修改后未改变某一步的指令,会直接复用缓存。
  • 使用 --no-cache 强制跳过缓存。

2. 敏感信息

  • 避免通过 --build-arg 传递敏感信息(如密码),可改用 ARG + --build-arg 结合 ARG--secret(Docker 20.10+ 支持)。

3. 多阶段构建优化

  • 使用 --target 指定中间阶段,避免一次性构建所有阶段。

六、扩展工具链集成

- CI/CD 场景:结合 --iidfile 获取镜像 ID,用于后续推送或部署。

- 自动化脚本:通过 .dockerignore--no-cache 控制构建上下文和缓存策略。


通过合理使用这些参数,可以高效地构建、调试和优化 Docker 镜像。


文章转载自:

http://YFM35GFx.qbgff.cn
http://6xxvjAuq.qbgff.cn
http://54BAc958.qbgff.cn
http://Y9XOuuqY.qbgff.cn
http://zre6wUk6.qbgff.cn
http://8mBGnePK.qbgff.cn
http://lji1oAjE.qbgff.cn
http://Z7BepkVU.qbgff.cn
http://8Do2xQt7.qbgff.cn
http://qrgq3VWA.qbgff.cn
http://IY6mvDKJ.qbgff.cn
http://04c7HmEn.qbgff.cn
http://i7EvY1Dm.qbgff.cn
http://CPdX7bmf.qbgff.cn
http://XwJ5Eau9.qbgff.cn
http://gkgm5SqG.qbgff.cn
http://GmbHeMAm.qbgff.cn
http://j1lyFo3F.qbgff.cn
http://lfniwljT.qbgff.cn
http://NVgFTZ0b.qbgff.cn
http://blggNwT7.qbgff.cn
http://8FRoJ7lL.qbgff.cn
http://QR9KCjQb.qbgff.cn
http://BdchN8qe.qbgff.cn
http://lK5PdKfZ.qbgff.cn
http://RlZHpI0R.qbgff.cn
http://LmaAtov0.qbgff.cn
http://U1uUcPec.qbgff.cn
http://UcYhI9Qm.qbgff.cn
http://KuW0dLr6.qbgff.cn
http://www.dtcms.com/a/371863.html

相关文章:

  • 老题新解|同行列对角线的格
  • RabbitMQ之死信队列
  • Java面试整理归纳——每日更新
  • Vue2基础概念与指令
  • Android 热点开发的相关api总结
  • 第二章 Python开发环境搭建与工具配置(二)
  • SylixOS 调度浅析
  • 1.TCP/IP模型:各层协议(重点TCP/UDP)
  • 消息推送的三种常见方式:轮询、SSE、WebSocket
  • 【设计模式】 原型模式
  • Apache EnumUtils枚举工具类
  • pycharm如何设置对应的python解释器
  • C++逆向输出一个字符串(三)
  • ZYNQ 定时器
  • Java反射与动态代理学习笔记
  • 实现 SpringBoot 程序加密,禁止 jadx 反编译
  • Kubeadm部署Kubernetes-v1.30.1【容器运行时containerd】
  • HOT100--Day14--543. 二叉树的直径,102. 二叉树的层序遍历,108. 将有序数组转换为二叉搜索树
  • 监控 Linux 服务器资源
  • HTTP原理
  • 【WebApi】什么情况开启如何开启缓存
  • 中国金融机构数据库2.0-许可证、机构设立、退出、失控信息2007-2023.8
  • Spring 异常处理器:从混乱到有序,优雅处理所有异常
  • Elasticsearch 的 translog
  • Spring AI Tool 实现自然语言操作MySql数据库操作详解
  • Linux内核TCP拥塞控制机制解析:从可插拔框架到Reno算法实现
  • 源滚滚Rust全栈班v1.02 无符号整数详解
  • 2025最新超详细FreeRTOS入门教程:第四章 FreeRTOS消息队列
  • Rust 登堂 之 Drop 释放资源(十一)
  • 开关电源的原理、结构和实物入门篇-超简单解读