当前位置: 首页 > 知识库问答 >
问题:

alpine docker图像和busybox docker图像有什么区别?

董花蜂
2023-03-14

高山码头工人形象和忙碌的码头工人形象有什么区别?

当我检查他们的DockFile时,alpine是这样的(对于alpine v3.12-3.12.7)

FROM scratch
ADD alpine-minirootfs-3.12.7-x86_64.tar.gz /
CMD ["/bin/sh"]

busybox是这样的

FROM scratch
ADD busybox.tar.xz /
CMD ["sh"]

但作为https://alpinelinux.org/about/说

Alpine Linux是围绕musl libc和busybox构建的。

那么到底有什么区别呢?

我也很好奇,许多docker图像(nodejs/nginx/html" target="_blank">php只是举几个例子)提供了基于阿尔卑斯山的图像,而不是基于busybox的图像。那是为什么呢?那么,忙碌盒图像的用例是什么?我需要强调的是,我不是在寻找为什么A比B好的答案,反之亦然,也不是软件推荐。

我一直在经历我的高山码头工人断断续续的域名系统查找失败,因为这里是穆斯-利比-阿尔卑斯最大的弱点,这里是阿尔卑斯知道库伯内特斯的域名系统问题吗?说。这是我提问的原因之一。

附言https://musl.libc.org/表示“musl是建立在Linux系统调用API之上的C标准库的实现”,并且https://en.wikipedia.org/wiki/Alpine_Linux提到

它以前使用uClibc作为其C标准库,而不是最常用的传统gnuc库(glibc)。尽管它更轻量级,但它确实存在与glibc不兼容的二进制文件的显著缺点。因此,必须编译所有软件,以便与uClibc一起使用才能正常工作。截至2014年4月9日,[16]Alpine Linux切换到musl,musl与glibc部分二进制兼容。

共有1个答案

冯文彬
2023-03-14

这两者之间的关键区别在于,busybox映像的旧版本静态链接busybox与glibc(当前版本由于在静态配置中使用libnss而动态链接busybox与glibc),而alpine映像动态链接musl libc。

详细讨论用于在这两者之间进行选择的权重因子在这里是不属于主题的(软件推荐请求),但有一些关键点:

将glibc与musl libc进行比较,有几个要点(当然还有许多其他因素):

  • glibc是为性能和可移植性而构建的(通常添加需要大量代码的特殊情况下的性能优化)

比较静态构建和动态构建的优势:

  • 如果您的系统映像只有一个二进制可执行文件(用C或其他方式使用libc编写),那么静态构建总是更好,因为它会丢弃库中该可执行文件未实际使用的任何部分

老实说,这两个图像之间并没有覆盖整个矩阵空间的可能性;在某些情况下,两者都不是最优的。拥有一个只有busybox的映像,该映像静态地链接到musl libc(如果您要添加的所有内容都是非C语言的),或者拥有一个busybox的映像,该映像动态地链接到glibc(如果您要添加更多需要libc且与musl不兼容的二进制文件),这都是有价值的。

 类似资料:
  • 在这种情况下,这些rest层ID是否与其他一些图像相对应呢?如果是真的,我可以视图层为图像吗?

  • 本文向大家介绍彩色图像、灰度图像、二值图像和索引图像区别?相关面试题,主要包含被问及彩色图像、灰度图像、二值图像和索引图像区别?时的应答技巧和注意事项,需要的朋友参考一下 彩色图像:RGB图像。灰度图像:0-255像素值。二值图像:0和1,用于掩膜图像。 索引图像:在灰度图像中,自定义调色板,自定义输出256种颜色值。

  • 本文向大家介绍图像的像素数与分辨率有什么区别?相关面试题,主要包含被问及图像的像素数与分辨率有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 像素数为图像实际组成的像素的个数,像素是没有固定宽度和高度的,是一个感光单元。 分辨率的单位为 像素/英寸(1英寸(inch)=2.54厘米(cm)),这里指的不是面积,而是对角线的长度,即dpi、ppi。分辨率也称之为点密度,分辨率越高,看的越细腻。

  • 问题内容: 在docker image prune 的docker 文档中,可以使用- a标志来 删除所有未使用的图像,而不仅仅是悬空的图像 然后 删除所有悬空的图像。如果指定了-a,还将删除所有未被容器引用的图像。 有人可以向我解释什么是悬空图像,悬空图像和未使用的图像有什么区别? 问题答案: 未使用的图像表示尚未在容器中分配或使用它。例如,在运行时-它会列出您所有退出的和当前正在运行的容器。显

  • 问题内容: 我正在尝试显示带有QLabel的opencv图像。我有两种不同版本的图像,第一种是opencv BGR图像,第二种是使用image [:,:,::-1]的RGB图像,BGR版本可以正常工作,但RGB版本不起作用。 下面的代码工作正常 这些代码不起作用: 问题答案: 如您所见,opencv读取BGR格式的图像,但读取RGB的QImage图像,在第一种方法中,您无需转换即可转换为QImag

  • 容器和Docker中的图像有什么区别?在“开始使用Docker”教程中,这两个术语都使用过,但我不理解它们之间的区别。 有谁能说点什么吗?