ICSE docker related research

ICSE 2024

Empirical Study of the Docker Smells Impact on the Image Size

Docker 气味对镜像大小影响的实证研究

Docker 是一种广泛采用的打包和部署应用程序的工具,它利用 Dockerfile 来构建镜像。然而,创建最佳的 Dockerfile 可能具有挑战性,通常会导致“Docker 异味”或偏离最佳实践。本文研究了 14 种 Docker 气味对 Docker 镜像大小的影响。为了评估 Docker 气味的大小影响,作者从 11 313 个开源 Docker 文件中识别并修复了 16 145 个 Docker 气味。作者观察到,气味导致每个有气味的镜像平均增加 48,06 MB (4,6 %)。根据气味类型,尺寸增加最多可达 10%,对于某些特定情况,气味可以代表镜像尺寸的 89%。有趣的是,最有影响力的气味与常见的包管理器有关,并且相对容易修复。为了收集开发人员对 Docker 异味大小影响的看法,作者提交了 34 个修复异味的拉取请求,并向开发人员报告了它们对 Docker 镜像的影响。 26/34 (76.5%) 的拉取请求已合并,有助于节省 3.46 GB (16.4%)。即使拉取请求被拒绝,开发人员的评论也表明了他们对解决这些 Docker 异味的积极​​兴趣。

ICSE 2021

Shipwright: A Human-in-the-Loop System for Dockerfile Repair

Shipwright:用于 Dockerfile 修复的人机交互系统

Docker 是一种轻量级操作系统级虚拟化工具。 Docker 镜像是通过执行构建来创建的,由称为 Dockerfile 的源级工件控制。作者在 GitHub 上研究了 Dockerfile,大吃一惊的是,超过四分之一的受检查 Dockerfile 无法构建(从而无法生成镜像)。为了解决这个问题,本文提出了 SHIPWRIGHT,这是一种人机交互系统,用于查找损坏的 Dockerfile 的修复。 SHIPWRIGHT 使用 BERT 语言模型的修改版本来嵌入构建日志并对损坏的 Dockerfile 进行集群。使用这些集群和基于搜索的程序,本文能够设计 13 条规则来自动修复 Dockerfile。在 SHIPWRIGHT 的帮助下,作者向 GitHub 项目提交了 45 个存在损坏 Dockerfile 的 Pull 请求(接受率为 42.2%)。此外,在对后来修复的损坏的 Dockerfile 进行“时间旅行”分析时,发现在研究的 22.77% 的案例中,SHIPWRIGHT 提出的修复相当于人类编写的补丁。最后,作者将当前工作与最近最先进的静态 Dockerfile 分析进行了比较,发现虽然静态工具在检查的 20.6-33.8% 的文件中检测到了可能导致构建失败的问题,但 SHIPWRIGHT 能够检测 73.25% 的文件中可能存在的问题,此外还为 18.9% 的文件提供自动修复。

ICSE 2020

Learning from, understanding, and supporting DevOps artifacts for docker

学习、理解和支持 Docker 的 DevOps 工件

随着 DevOps 工具和框架的使用不断增加,对支持代码以外的工具和技术的需求也不断增加。目前最先进的静态开发人员辅助工具(例如 Docker)仅限于浅层语法验证。作者确定了学习、理解和支持开发人员编写 DevOps 工件领域的三个核心挑战:(i) DevOps 工件中的嵌套语言,(ii) 规则挖掘,以及 (iii) 缺乏基于语义规则的分析。为了应对这些挑战,作者引入了 binnacle 工具集,它能够摄取 900,000 个 GitHub 存储库。

作者以 Docker 为重点,提取了大约 178,000 个独特的 Dockerfile,并确定了由 Docker 专家编写的黄金 Dockerfile 集。作者通过一种称为分阶段解析的技术,将 AST 中有效且不可解释的节点数量减少了 80% 以上,从而解决了挑战 (i) 。为了应对挑战 (ii),本文引入了一种新颖的规则挖掘技术,能够恢复作者策划的基准中三分之二的规则。通过这种自动挖掘,能够恢复手动规则收集期间未找到的 16 条新规则。为了解决挑战 (iii),本文从黄金集中文件的提交中手动收集了一组 Dockerfile 规则。这些规则封装了最佳实践,避免 docker 构建失败,并改善映像大小和构建延迟。作者创建了一个使用这些规则的分析器,发现平均而言,GitHub 上的 Dockerfile 违反规则的频率是黄金集中的 Dockerfile 的五倍。作者还发现工业 Dockerfile 的表现并不比来自 GitHub 的 Dockerfile 好。

binnacle 中学到的规则和分析器可用于帮助 IDE 中的开发人员创建 Dockerfile,并以事后方式识别现有 Dockerfile 中的问题并改进现有 Dockerfile。

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

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

相关文章

【JavaEE 初阶(五)】文件操作和IO

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多文件操作 目录 1.前言2.认识文件3.文件操作3.1File 属性3.2构造方法3.3File类方法 4.文件内容操作4.1R…

「JavaEE」多线程案例1:单例模式阻塞队列

🎇个人主页:Ice_Sugar_7 🎇所属专栏:JavaEE 🎇欢迎点赞收藏加关注哦! 多线程案例分析 🍉单例模式🍌饿汉模式🍌懒汉模式🍌指令重排序 🍉阻塞队列&a…

Matlab|考虑极端天气线路脆弱性的配电网分布式电源和储能优化配置模型

1主要内容 程序主要参考《考虑极端天气线路脆弱性的配电网分布式电源配置优化模型-马宇帆》,针对极端天气严重威胁配电网安全稳定运行的问题。基于微气象、微地形对配电网的线路脆弱性进行分析,然后进行分布式电源接入位置与极端天气的关联性分析&#…

易图讯三维电子沙盘-大数据处理服务

易图讯科技10名高级大数据工程师,高效、快速进行POI、DEM、高清卫星影像、地形地貌、路网、矢量地图等海量大数据处理服务。 免费专业提供POI、AOI、DEM、高清卫星影像、地形地貌、路网、矢量地图等海量大数据处理服务。 1年更新2次POI、高清卫星影像。

Electron学习笔记(四)

文章目录 相关笔记笔记说明 六、数据1、使用本地文件持久化数据(1) 用户数据目录(2) 读写本地文件(3) 第三方库 2、读写受限访问的 Cookie3、清空浏览器缓存 相关笔记 Electron学习笔记(一)Electron学习笔记(二)Electron学习笔记…

Rust教程:贪吃蛇游戏(第 2/2 部分)

In this article, we’ll finish the snake.rs file, and also continue with the rest of the files (main.rs, draw.rs, game.rs). 欢迎来到本教程的第二部分,在本文中,我们将完成 snake.rs 文件,并继续处理其余文件(main.rs、d…

数据结构-二叉树-红黑树

一、红黑树的概念 红黑树是一种二叉搜索树,但在每个节点上增加一个存储位表示节点的颜色,可以是Red或者BLACK,通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,…

springcloud整合网关(springcloud-gateway) 跨域处理

pom引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- 服务注册 --><dependency><groupId>com.alibaba.cloud</groupId&…

LC3134. 找出唯一性数组的中位数

3134. 找出唯一性数组的中位数 给你一个整数数组 nums 。数组 nums 的 唯一性数组 是一个按元素从小到大排序的数组&#xff0c;包含了 nums 的所有 非空子数组中 不同元素的个数。 换句话说&#xff0c;这是由所有 0 < i < j < nums.length 的 distinct(nums[i..…

Python 将Excel转换为多种图片格式(PNG, JPG, BMP, SVG)

目录 安装Python Excel库 使用Python将Excel工作表转换为PNG&#xff0c;JPG或BMP图片 使用Python将Excel特定单元格区域转换为PNG&#xff0c;JPG或BMP图片 使用Python将Excel工作表转换为SVG图片 有时&#xff0c;你可能希望以图片形式分享Excel数据&#xff0c;以防止他…

【Python 常用脚本及命令系列 1.3 -- 使用Python实现串口读写】

请阅读【嵌入式开发学习必备专栏】 文章目录 Python实现串口读写注意事项 Python实现串口读写 背景&#xff1a; 需要实现个Python脚本打开串口19并设置波特率为115200然后实现write&#xff08;addr, val&#xff09; 和 read(addr)函数&#xff0c;其中write函数是通过在串口…

vue3使用setup模式的store报错

** setup store模式 $reset方法报错 ** 顾名思义就是 使用store 使用的是setup 语法模式 不能执行$reset 方法 解决方式&#xff1a; // main.ts import { createPinia } from pinia const pinia createPinia() pinia.use(({ store }) > {const initialState JSON.pars…

并行计算的一些知识点分享--并行系统,并行程序, 并发,并行,分布式

并行计算 核是个啥&#xff1f; 在并行计算中&#xff0c;“核”通常指的是处理器的核心&#xff08;CPU核心&#xff09;。每个核心都是一个独立的处理单元&#xff0c;能够执行计算任务。多核处理器指的是拥有多个这样核心的单一物理处理器&#xff0c;这样的设计可以允许多…

美股市场恒生指数冲刺19000点关口 地产股大涨

查查配5月10日电(中新财经记者 谢艺观)5月10日,港股现强势行情,恒生指数盘中一度冲至18993.28点,距离19000点关口仅一步之遥。 美港通证券以其专业的服务和较低的管理费用在市场中受到不少关注。该平台提供了实盘交易、止盈止损、仓位控制等功能,旨在为投资者提供更为全面的投…

.net core WebApi 部署 IIS

安装 IIS 下载需要的 net 版本安装 前往 .net core WebApi 项目打包 Program.cs var builder WebApplication.CreateBuilder(args);// 输出 builder.Services.AddControllers().AddJsonOptions(options > {options.JsonSerializerOptions.PropertyNamingPolicy null;…

怎么做自己的网站

现如今&#xff0c;拥有自己的网站已经成为现代生活中的一种标志。无论是个人博客、在线商店还是企业官网&#xff0c;都可以通过拥有一个网站来展示自己的个性、产品或服务。在这篇文章中&#xff0c;我将分享如何创建和管理自己的网站。 首先&#xff0c;你需要选择一个合适的…

go语言切片slice使用细节和注意事项整理

go语言中切片slice的使用是最为频繁的&#xff0c;效率也是最高的&#xff0c; 今天就给大家说说我们在使用过程中会忽略的一些细节。 先普及一下slice的核心基础知识&#xff0c; go语言中的切片是引用类型&#xff0c; 其底层数据的存储实际上是存储在一个数组 上&#xff08…

unreal engine5.3.2 Quixel bridge无法登陆

UE5系列文章目录 文章目录 UE5系列文章目录前言一、问题定位二、解决方法 前言 这几天unreal engine5.3.2 Quixel bridge无法登陆&#xff0c;输入epic 账号和密码&#xff0c;然后在输入epic发送的验证码&#xff0c;总是提示登录失败。就算是使用科学上网依然无法登录。而且…

Java面试题:阐述Java中的自动装箱与拆箱机制,以及使用它们时可能遇到的性能问题

在Java中&#xff0c;自动装箱&#xff08;Autoboxing&#xff09;和拆箱&#xff08;Unboxing&#xff09;是Java 5引入的特性&#xff0c;它们允许基本数据类型和对应的包装类之间的自动转换。 自动装箱 自动装箱是指将基本数据类型&#xff08;如int、double等&#xff09…

Linux日志管理配置介绍

日志管理 内核日志 服务日志 日志等级 man 8 syslog #define KERN_EMERG “<0>” /* system is unusable / #define KERN_ALERT “<1>” / action must be taken immediately / #define KERN_CRIT “<2>” / critical conditions / #define KERN_ERR “<…