Docker 容器镜像 alpine VS Ubuntu 的竞争

2021-11-24 22:29:39 +08:00
 programV2

<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>

3921 次点击
所在节点    程序员
32 条回复
programV2
2021-11-25 13:41:11 +08:00
@jellyspot 请问 DNS 是什么问题?只知道 glibc 与 musl 差异挺大的
@jellyspot
12101111
2021-11-25 14:30:30 +08:00
musl 没有 nss, 直接用 resolve.conf 配置 DNS

如果想用 musl, 那么不要妄想 cp 一个 glibc 的 elf 文件就能跑, 不可能的, alpine 软件仓库没有的 C/C++库要自己编译.

我的桌面系统用的是 Gentoo musl, 没见过哪个 C/C++包是彻底编译不了的, 改一改都能编译
pckillers
2021-11-25 14:55:13 +08:00
为啥我用的公用镜像不是 alpine 就是 Debian 。 从没见过用 Ubuntu 的啊?
krcalc
2021-11-25 17:39:32 +08:00
还有 distroless
corvofeng
2021-11-25 22:52:24 +08:00
个人意见, 我有两个选择点:

1. 旧项目保持原状,
2. 针对新项目, 编译型语言 Golang 就用 alpine, 镜像体积能保持很小, 真的清爽(K8s 好多镜像都直接用 scratch, 但是调试时麻烦, 这种库是给很多人用的, 所以会考虑压缩体积). 要是像 Python 这种用 debian 就行了, 反正要安装很多包, 有的还要 gcc 编译, 镜像的体积根本小不了

平时工作不用 C++/Java, 要是给我的话, 估计它两都是分步构建+debian 做基础镜像. 既然使用了分步构建, 每个镜像差别不会很大, 真正 pull 的层也不多. 另外的话从开发者心理上讲 debian 稳一点, 更接近普通 Linux 环境.
hutoer
2021-11-26 08:50:33 +08:00
使用 docker 好多年了,从最初的 CentOS 、Fedora 到 alpine 再到 debian ,综合(体积、第三库、折腾情况)来说 debian 最好
nanmu42
2021-11-26 08:53:42 +08:00
如果是 Go 项目,没有 cgo 的情况下甚至可以二段 build ,第二段用 from scratch ,不用底包。
例子:

https://gist.github.com/nanmu42/90bf2d3870b64aec20b68ec3c104a610
chenzheyu
2021-11-26 10:24:30 +08:00
alpine 挺精简的,业务也没有遇到问题,就是编译 grpc 的时候会有 linux header 的缺失。不过无伤大雅。体积是真的小啊!
programV2
2021-11-26 14:39:14 +08:00
@hutoer
@corvofeng 谢谢🙏。请问如果说用 Debian 做基础镜像 是因为他的库比较全,那用 Ubuntu 库 应该是最全的吧?
programV2
2021-11-26 14:46:37 +08:00
我发了这个帖子 https://www.v2ex.com/t/815453 之后就被限制登录,然后隔了快半个月重新更换的密码才能登的上,然后发现自己 at 别人, 别人都没有提示。这是被降权了吧? 哪位还没被降权的好心人能帮我 at 一下 @ livid 帮我翻案⋯⋯谢谢🙏
@liuxu
corvofeng
2021-12-23 18:01:03 +08:00
@programV2 Debian 是很多库官方提供的镜像,比如 Python ,Ubuntu 作为官方镜像比较少
programV2
2021-12-26 00:26:24 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/817762

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX