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

Docker学习--本地镜像管理相关命令--docker build 命令

docker build 命令的作用:
用于从 Dockerfile 构建 Docker 镜像。通过读取 Dockerfile 中定义的指令,逐步构建镜像,并将最终结果保存到本地镜像库中。

语法:
docker build [参数选项] PATH | URL | -

参数解释:
PATH:包含 Dockerfile 的目录路径或 .(当前目录)。
URL:指向包含 Dockerfile 的远程存储库地址(如 Git 仓库)。
-:从标准输入读取 Dockerfile。
①常用选项:
-t, --tag: 为构建的镜像指定名称和标签。
-f, --file: 指定 Dockerfile 的路径(默认是 PATH 下的 Dockerfile)。
–build-arg: 设置构建参数。
–no-cache: 不使用缓存层构建镜像。
–rm: 构建成功后删除中间容器(默认开启)。
–force-rm: 无论构建成功与否,一律删除中间容器。
–pull: 始终尝试从注册表拉取最新的基础镜像。
②更多选项:
–build-arg=[]: 设置构建镜像时的变量。
–cpu-shares: 设置 CPU 使用权重。
–cpu-period: 限制 CPU CFS 周期。
–cpu-quota: 限制 CPU CFS 配额。
–cpuset-cpus: 指定可使用的 CPU ID。
–cpuset-mems: 指定可使用的内存节点 ID。
–disable-content-trust: 忽略内容信任验证(默认启用)。
-f: 指定 Dockerfile 的路径。
–force-rm: 强制在构建过程中删除中间容器。
–isolation: 使用指定的容器隔离技术。
–label=[]: 设置镜像的元数据。
-m: 设置内存的最大值。
–memory-swap: 设置交换空间的最大值(内存 + 交换空间),-1 表示不限制交换空间。
–no-cache: 构建镜像时不使用缓存。
–pull: 尝试拉取基础镜像的最新版本。
–quiet, -q: 安静模式,构建成功后只输出镜像 ID。
–rm: 构建成功后删除中间容器(默认启用)。
–shm-size: 设置 /dev/shm 的大小,默认值为 64M。
–ulimit: 设置 Ulimit 配置。
–squash: 将 Dockerfile 中所有步骤压缩为一层。
–tag, -t: 为镜像指定名称和标签,格式为 name:tag 或 name;可以在一次构建中为一个镜像设置多个标签。
–network: 在构建期间设置 RUN 指令的网络模式,默认值为 default。

实例:
创建Dockerfile文件:

# Dockerfile 示例
FROM ubuntu:20.04
LABEL maintainer="yourname@example.com"
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/index.html
CMD ["nginx", "-g", "daemon off;"]

①指定Dockerfile文件路径来构建镜像:
docker build -f /path/to/Dockerfile -t myimage:latest
②设置构建参数:
docker build --build-arg HTTP_PROXY=http://proxy.example.com -t myimage:latest
③不使用缓存层构建镜像:
docker build --no-cache -t myimage:latest,这会在构建镜像时忽略所有缓存层,确保每一步都重新执行。

注意事项:
①确保 Dockerfile 语法正确,并按照顺序执行每一步。
②使用 .dockerignore 文件排除不需要的文件和目录,以减少构建上下文的大小。
③在生产环境中,尽量使用精简的基础镜像以减小镜像体积和提高安全性。
④避免在 Dockerfile 中暴露敏感信息(如密码、密钥)。

总结:
docker build 命令是构建 Docker 镜像的核心工具,通过定义清晰的 Dockerfile,可以自动化地构建应用程序的运行环境和依赖。在使用时,确保合理设置选项和优化Dockerfile,以提高构建效率和镜像质量。

相关文章:

  • IP(Internet Protocol,互联网协议)
  • 解决 CANoe 多测试用例下固定 IP 地址冲突问题的分析与方案
  • 【无标题】Scala函数基础
  • Docker学习--本地镜像管理相关命令--docker images 命令
  • 新能源汽车空调系统(R134A)性能评估(一)
  • 控制大型语言模型(LLM)行为的八种技术
  • 学习笔记--(6)
  • 数据结构(4)——带哨兵位循环双向链表
  • k8s 1.30 部署crondns
  • 进程地址空间:操作系统中的虚拟世界与心灵映射,深入解析进程地址空间
  • 【Axure元件分享】年份范围选择器
  • 批量删除 txt/html/json/xml/csv 等文本文件空白行
  • Spring MVC 页面跳转方案与区别
  • 第十四届蓝桥杯大赛软件赛省赛Python 大学 C 组:6.棋盘
  • 基于 Fluent-Bit 和 Fluentd 的分布式日志采集与处理方案
  • 【零基础入门unity游戏开发——2D篇】SpriteMask精灵遮罩组件
  • 【蓝桥杯】单片机设计与开发,温度传感器DS18B20
  • TPS入门DAY01 服务器篇
  • US112S-ASEMI智能家居专用US112S
  • 深入理解 IntersectionObserver:让前端滚动监听更高效
  • 匈牙利外长称匈方已驱逐两名乌克兰外交官
  • 纽约大学朗格尼医学中心的转型带来哪些启示?
  • 上海发布预付卡消费“10点提示”:警惕“甩锅闭店”套路
  • 中消协点名新能源汽车行业:定金退款争议频发
  • 深入贯彻中央八项规定精神学习教育中央第七指导组指导督导中国船舶集团见面会召开
  • 中国德国商会报告:76%在华德企受美国关税影响,但对华投资战略依然稳固