6

Docker 容器镜像 alpine VS Ubuntu 的竞争

 2 years ago
source link: https://www.v2ex.com/t/817762
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  程序员

Docker 容器镜像 alpine VS Ubuntu 的竞争

  programV2 · 15 小时 23 分钟前 via iPhone · 853 次点击

<div class="markdown_body">
最下面的链接 是三年前 reddit 论坛有讨论将 alpine 作为基础镜像, 如今已经实现被推荐作为 Docker 官方基础镜像。。想请教各位:
1 、回帖中提到的那些 alpine 的缺陷是否已解决? 比如它的 musl libc 是不是还会有很多坑?
2 、现在 alpine 还有哪些库没有,但是也没办法自己手动编译安装的?
3,你们在构建 docker 基础镜像的话会如何选择?


https://www.reddit.com/r/docker/comments/b6gk1x/why_use_ubuntu_as_base_image_when_alpine_exists/

谢谢🙏
</div>

21 条回复    2021-11-25 13:41:11 +08:00

programV2

programV2   14 小时 36 分钟前 via iPhone

Tink

Tink   13 小时 40 分钟前 via Android

这几天正好在用 mqtt ,所以需要在 docker 里构建 mosquito ,alpine 和 ubuntu 都试了,alpine 很奇怪的是,verbose 模式下拿不到任何 log ,也不知道是我没搞对还是咋回事,就很难受

LokiSharp

LokiSharp   4 小时 53 分钟前

用 Debian 还挺好的

cokyhe

cokyhe   4 小时 28 分钟前

项目能用 alpine 就用 alpine ,不行就改 ubuntu ,不和自己过不去

programV2

programV2   4 小时 9 分钟前 via iPhone

@cokyhe 大佬 请问你优先用 alpine 如何避开 musl 的问题?

liuxu

liuxu   4 小时 7 分钟前

1. 一把年纪了,是该自己学会 google 了
2. 都能编译
3. 常用 alpine ,目前制作 docker image 最小方案有 2 种,一种是在 gentoo 下用 kubler 这类交叉编译工具制作目标系统 tar 包然后生成 docker image ;还有一种方式就是通过 alpine ,我实际测试来看 alpine 有时候比 gentoo 下自己制作的包还要小,而且编译时间 10 倍缩减


@Tink 日常通用方式是 ln -sf /proc/$$/fd/1 verbose.log ,然后进程输入日志到这个文件,还有问题的话看看配置是不是弄错了

billzhuang

billzhuang   4 小时 4 分钟前 via iPhone

我最近钟意 google 的 distroless

bao3

bao3   3 小时 54 分钟前 via iPhone

无论用哪个系统做底包,它们都是工具,哪个顺手你就用哪个。因噎废食就搞反了

afirefish

afirefish   3 小时 54 分钟前

debian 11 ,虽然没有 alpine ,但是包比较全,没有太多坑。

SmiteChow

SmiteChow   3 小时 40 分钟前

当然是 Ubuntu ,你就缺那点空间还是网速?

hwdef

hwdef   3 小时 5 分钟前

能用 alpine 的就用 alpine ,如果用到了 musl ,就换 ubuntu.

programV2

programV2   2 小时 42 分钟前 via iPhone

@hwdef 关键是你不知道用到的哪个依赖包可能有用到 MUSL ? 想要排错都很困难。

programV2

programV2   2 小时 34 分钟前 via iPhone

@liuxu 谢谢大佬回复。 请问
1 ,你在实际使用中没有碰到 musl 带来的问题吗?
2 ,Ubuntu 的库是不是比 alpine 要全一些?

liuxu

liuxu   1 小时 24 分钟前

@programV2

1. 没有
2. alpine 和其他系统最大的不同是系统命令用的 busybox ,没有杂七杂八的 lib, include ,很干净

liuxu

liuxu   1 小时 20 分钟前

@programV2 还有一点,默认官方库只有 main ,其实还可以添加 testing ,根据我使用 swoole 来看,实际上 testing 只是帮你手动编译了而已

programV2

programV2   1 小时 15 分钟前 via iPhone

@joesonw 这个很少看到有人用啊。请问你使用过体验怎么样?

programV2

programV2   1 小时 5 分钟前 via iPhone

@liuxu 谢谢大佬。我贴一段论坛很多人提到的问题,想听听您的看法。: "Musl has different malloc, different libm, different pthreads. These things all will impact performance in some way (maybe better, maybe worse), and will hit implementation bugs in libraries at some point because someone coded too specifically against glibc. This + development time tradeoff risk doesn’t seem worthwhile, especially in data science where many libraries are needed and the library quality varies so wildly and often aren’t even portable beyond one specific version of one specific Linux distribution"
@liuxu
@liuxu

liuxu

liuxu   51 分钟前   ❤️ 1

@programV2

首先要说一下你的账号被降权了,你 at 人实际上别人是没有提醒的,我是重新点回了这个帖子看到你 at 我的楼层才回复你的

musl 可能是有兼容问题,但是你确定你会遇到么,实际上就算你用 glibc ,也是有 bug 的,但你遇到过么。
目前从 docker hub 看,基本上所有常用的服务类基础软件都会有基于 alpine 的镜像,nginx,php,mysql,redis ,既然都在基于 alpine 做镜像,你在担心什么

jellyspot

jellyspot   23 分钟前

alpine 就一个 dns 问题,好多新手都能整蒙,因为大家用的其他系统,都是 glibc 的,但是 alpine 是 musl

programV2

programV2   12 分钟前 via iPhone

@jellyspot 请问 DNS 是什么问题?只知道 glibc 与 musl 差异挺大的
@jellyspot

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK