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

Docker入门之构建

Docker构建概述

Docker Build 实现了客户端-服务器架构,其中:

  • 客户端:Buildx 是用于运行和管理构建的客户端和用户界面。
  • 服务器:BuildKit 是处理构建执行的服务器或构建器。
    docker 构建

当您调用构建时,Buildx 客户端会向 BuildKit 后端发送构建请求。BuildKit 解析构建指令并执行构建步骤。构建输出要么发送回客户端,要么上传到注册表,例如 Docker Hub。

Buildx 和 BuildKit 均随 Docker Desktop 和 Docker Engine 一起安装,开箱即用。调用该docker build命令时,您将使用 Buildx 使用与 Docker 捆绑在一起的默认 BuildKit 运行构建。

Buildx

Buildx 是您用来运行构建的 CLI 工具。该docker build命令是 Buildx 的包装器。当您调用时docker build,Buildx 会解释构建选项并向 BuildKit 后端发送构建请求。

Buildx 客户端的功能远不止运行构建。您还可以使用 Buildx 创建和管理 BuildKit 后端(称为构建器)。它还支持管理注册表中的映像以及同时运行多个构建的功能。

Docker Buildx 默认随 Docker Desktop 一起安装。您还可以从源代码构建 CLI 插件,或从 GitHub 存储库获取二进制文件并手动安装。 有关更多信息,请参阅 GitHub 上的Buildx README 。

BuildKit

BuildKit 是执行构建工作负载的守护进程。

构建执行从调用命令开始docker build。Buildx 解释您的构建命令并向 BuildKit 后端发送构建请求。构建请求包括:

  • Dockerfile
  • 建立论点
  • 导出选项
  • 缓存选项

BuildKit 解析构建指令并执行构建步骤。在 BuildKit 执行构建时,Buildx 会监控构建状态并将进度打印到终端。

如果构建需要来自客户端的资源,例如本地文件或构建机密,BuildKit 会向 Buildx 请求所需的资源。

与早期版本的 Docker 中使用的旧构建器相比,BuildKit 在这方面更加高效。BuildKit 仅在需要时请求构建所需的资源。相比之下,旧构建器始终会获取本地文件系统的副本。

BuildKit 可以从 Buildx 请求的资源示例包括:

  • 本地文件系统构建上下文
  • 构建机密
  • SSH 套接字
  • 注册表身份验证令牌
    有关 BuildKit 的更多信息,请参阅 BuildKit。

Dockerfile 概述

Dockerfile

一切都从 Dockerfile 开始。

Docker 通过读取 Dockerfile 中的指令来构建镜像。Dockerfile 是一个文本文件,其中包含构建源代码的指令。Dockerfile 指令语法由Dockerfile 参考中的规范参考定义 。

以下是最常见的指令类型:

操作说明Value
FROM <image>为您的图像定义一个基础。
RUN <command>在当前图像之上的新层中执行任何命令并提交结果。RUN还具有用于运行命令的 shell 形式。
WORKDIR <directory>为Dockerfile 中其后的任何RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。
COPY <src> <dest>从路径中的容器文件系统复制新文件或目录并将它们添加到其中。
CMD <command>允许您定义基于此映像启动容器后运行的默认程序。每个 Dockerfile 只有一个,当存在多个CMD时,仅考虑最后一个CMD实例。

Dockerfile 是镜像构建的关键输入,可以根据您的独特配置促进自动化、多层镜像构建。Dockerfile 可以从简单开始,并根据您的需求扩展以支持更复杂的场景。


未完待续,
祝各位程序员🧑‍💻,程序员节快乐。


http://www.kler.cn/a/372381.html

相关文章:

  • rocketmq-push模式-消费侧重平衡-类流程图分析
  • 可灵1.6正式上线,图生视频再创新视界
  • CCF-GESP 等级考试 2023年12月认证C++五级真题解析
  • 我的秋招总结
  • 【Go学习】从一个出core实战问题看Go interface赋值过程
  • 如何给负载均衡平台做好安全防御
  • 【大数据学习 | HBASE】hbase的原理与组成结构
  • 后台管理系统开箱即用的组件库!!
  • [mysql]子查询的概述和分类及单行子查询
  • 解决postgresql的没有data/文件夹postgresql.conf
  • Linux使用Dockerfile部署Tomcat以及jdk
  • Java面试题中高级进阶(JVM篇01)
  • 数据分析与效果评估的有效方法与实践探讨
  • 【WPF】如何使用异步方法
  • 一文理解决策树:原理、数学公式与全流程实战讲解
  • 轻松实现金蝶与旺店通数据无缝对接的完整解决方案
  • 字节青训-找出最长的神奇数列
  • 【数据结构】快速排序(三种实现方式)
  • 【机器学习】Lesson3 - 逻辑回归(LR)二分类
  • VBA语言専攻介绍20241031
  • 用户统计开发思路
  • aarch64-opencv341交叉编译,并在arm上部署helloopencv
  • 【灯光数据最新整理】 2000至2023年“NPP-VIIRS“夜间灯光数据(500m分辨率)-最新出炉_附下载链接
  • HCIP--以太网交换安全(总实验)
  • ssm基于web的网络游戏交易平台信息管理系统的设计与实现+vue
  • Linux_02 Linux常用软件——vi、vim