Docker Buildkit(新增 --mount、--security、--network 等特性)

news2024/11/23 12:29:17

BuildKit是Docker官方社区推出的下一代镜像构建神器。
可以更加快速,有效,安全地构建docker 镜像,自 docker v18.06 版本起已经集成了该组件。

Buildkit 是下一代 docker 构建组件,拥有众多特性:

  • 自动垃圾收集
  • 可扩展的前端格式
  • 并发依赖项解析
  • 高效的指令缓存
  • 构建缓存导入/导出
  • 嵌套的构建作业调用
  • 可配置的构建底层,包括 OCI (runc)和 containerd,未来将加入更多的构建底层
  • 多种输出格式
  • 可插拔架构
  • 无需 root 权限

其中增加了一个很实用的新语法 RUN --mount,顾名思义用来文件挂载使用。

RUN --mount 允许您创建 mount,该 mount 作为构建期间可以访问的一部分。该特性可用于从构建的其他部分绑定文件,而无需复制、访问构建 secrets 或 ssh-agent 套接字,或者创建缓存位置从而加速构建。

打开 https://docs.docker.com/engine/reference/builder/#syntax 搜索 --mount 有官方详细的说明。

要特别注意的是,预启用 --mount 语法,需要在 dockerfile 中添加如下魔术注释,确保放在 dockerfile 文件的第一行

# syntax=docker/dockerfile:1.2

更多版本官方地址:https://hub.docker.com/r/docker/dockerfile

在这里插入图片描述

注意:就目前版本来讲,–mount 只能挂在已经存在的镜像中的目录或者构建dockerfile的当前上下文目录(from是一个已经存在的镜像的名字),不能挂在宿主机目录。

示例:

# syntax=docker/dockerfile:experimental
FROM centos AS centos
FROM alpine
RUN --mount=type=bind,from=centos,source=/,target=/centos ls /centos > /root/centos.txt

不提供 from 则默认挂载 dockerfile 当前上下文目录

启用 Buildkit 的方式有两种:

1、在原来的 docker build 命令之前增加指令,如下所示:

# 原构建命令
docker build -f Dockerfile -t test_name .

# 增加DOCKER_BUILDKIT=1后的命令
DOCKER_BUILDKIT=1 docker build -f Dockerfile -t test_name .

2、修改 /etc/docker/daemon.json 文件,添加内容如下所示:

{
  "features": {
    "buildkit" : true
  }
}

然后重启 docker 服务

systemctl daemon-reload
systemctl restart docker

相关参考资料:
https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/reference.md
https://docs.docker.com/build/buildkit/
https://blog.51cto.com/u_15127521/2658074
buildx 资料


(END)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/20562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

静态WEB容器镜像最小化实践

在现代的B/S架构应用中,我们会做前后端分离,某些前端Web服务会将编译完成的静态文件放到一个web服务器进行部署。例如,我的博客也是基于Hugo编译的静态文件来进行部署的。 那在容器化部署模式下,我们需要基于一个web服务的基础容…

js:什么是编译时和运行时

编译时 源代码编译为机器可执行的二进制码。 编译过程中一般会识别你代码中的语法错误等问题,这个错误就叫编译时错误,做的一些检查也叫做编译时类型检查或者静态类型检查,因为静态就意味着代码还没有放到内存里去运行,只是把代…

九.STM32F030C8T6 MCU开发之电源掉电数据保存案例

九.STM32F030C8T6 MCU开发之电源掉电数据保存案例 0.总体功能概述 使用STD库–en.stm32f0_stdperiph_lib_v1.6.0。 1.掉电数据保存背景 掉电保存数据的时间内 电源稳定。也就是数据保存时间要尽量短,电源稳定要尽量长。 第一种,采用备用电池的方法来实现,增加了电池和更…

DFS搜索和输出所有路径

文章目录1、DFS搜所有路径2、用栈记录和输出路径3、例题3.1 C代码3.2 Python代码4、真题4.1 C代码4.2 Python代码2022.12将出版蓝桥杯大赛用书《蓝桥杯大赛-程序设计竞赛专题挑战教程》,作者:蓝桥杯组委会、罗勇军。   这本书解析了蓝桥杯大赛的常见考…

PLC学习笔记(二):PLC结构(1)

目录: PLC学习笔记(一):概述 PLC学习笔记(二):PLC结构(1) PLC学习笔记(三):PLC结构(2) 🦁&…

嵌入式FreeRTOS学习十一,深入理解任务调度机制

一.任务调度机制 可抢占:高优先级的任务先运行时间片轮转:同优先级的任务轮流执行空闲任务礼让:如果有同是优先级为0的其他就绪任务,空闲任务主动放弃一次运行机会函数调用vTaskDelay( xDelay5ms )可以主动放弃任务执行&#xff…

大学物理·第8章【电磁感应、电磁场】

from now on, 以后的篇幅我都不会写太多了。因为效果也不一定有,还很浪费时间。 感应电动势 那个奥特曼变身器的符号是 磁链 看看划线公式即可 动生电动势:dξ vB dl 例 如果,到时候复习的时候觉得简单的话,就删掉好了 自感、互…

【HTML5】登录页面制作简易版

刚开始学习Java。文件的命名,讲道理应该以英文为主,但是英语又不好,所以只好用拼音,最痛苦的应该算是那些英语又不好,又想秀一下的程序员,一半英语一半拼音,如mainFangFa~~~你说看了糟心不糟心。…

山东大学线性代数-1-矩阵-1

目录 1.2 几种特殊的矩阵 1.2.1 方阵 1.2.2 零矩阵 1.2.3 对角矩阵 1.2.4 单位矩阵 1.2.5 数量矩阵 1.2.6 三角阵 1.2.7 梯形阵 1.3 矩阵的运算(一) 1.3.1 相等 1.3.2 加、减法 1.3.3 数乘 1.3.4 矩阵的乘法 1.4 矩阵的运算(二&#x…

SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.18 查询文档

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇4 数据层解决方案4.18 查询文档4.18.1 查询文档4.18.2 小结4.18.3 总…

山东大学线性代数-3-n维向量

目录 3.1 n维向量及其线性运算 3.1.1 n维向量的概念 3.1.2 向量的相等 3.1.3 n维向量的线性运算 3.1.4 线性组合 3.1.5 向量组的等价 3.2 向量组的线性相关性 3.2.1 线性相关性的定义 3.2.2 特殊情形的线性相关性 3.3 相关性的判定及有关重要结论 3.3.1 线性相关与…

[MQ] SpringBoot使用直连交换机Direct Exchange

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

Bootstrap-栅格实例(二)

栅格实例 进入官网 选择3.0的中文文档: 选择组件: 选择缩放图: 选择这个,复制代码: 把代码拷贝到,新创建的模板固定container里面: 删除靠过来的多余的row: 修改div的calss&…

【信息奥赛实训】Week1——STL 与基础数据结构专题训练

【信息奥赛实训】Week1-Lab-STL 作者|Rickyの水果摊 时间|2022年11月20日 实训概要 实训专题 STL 与基础数据结构专题训练 实训目的 掌握STL常用的算法、容器、容器适配器的使用方法。能够利用STL的算法、容器、容器适配器求解问题。 题目列表 A&…

HTML小游戏9 —— 潜行游戏《侠盗罗宾汉》(附完整源码)

💂 网站推荐:【神级源码资源网】【摸鱼小游戏】🤟 风趣幽默的前端学习课程:👉28个案例趣学前端💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】💬 免费且实用的计算机相关知…

紫外线杀菌器

一、概述 紫外线杀菌器是利用波长为225-275nm的紫外线对微生物的杀灭而使水中菌类得以净化。当水流经消毒仪时,高强度杀菌作用的紫外线即将水中细菌杀灭。本产品彻底解决了饮用水二次污染细菌超标问题,同时也适用于饮料、食品、游泳池等用水的消毒处理。…

Linux基本指令——综合操作

bc指令bc指令其实就是Linux下的计算器Ctrl c退出也可以通过管道进行输出。bc命令并不常用,主要是见见。uname -r指令语法:uname [选项]作用:uname可以用来获取电脑或者操作系统的相关信息。选项:-a或–all 详细输出所有信息&…

ConsulManager安装

地址 地址: https://github.com/starsliao/ConsulManager使用yum部署consul 在这里可以直接使用yum安装部署consul这个组件 # 使用yum部署consul yum install -y yum-utils yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.re…

(续)SSM整合之springmvc笔记(RESTful之RESTful案例)(P148-153)

目录 RESTful案例 一 . 准备工作 1 . 准备实体类 2 .准备dao模拟数据 3. 创建控制层EmployeeController 二 功能清单 三 . 具体功能:查询所有员工数据 ①控制器方法 ②创建employee_list.html RESTful案例 一 . 准备工作 和传统CRUD 一样,…

【前沿技术RPA】 一文了解UiPath 通过Invoke Method 和 Invoke Code增强自动化功能

🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。 🐬个人主页:会敲键盘的肘子 🐰系列专栏:UiPath 🦀专栏简介:UiPath在传统的RPA(Robotic…