最近反向感受了一波,啥叫程序员不愿意接受新事物,因为新东西是真的坑。下面发表一些不成熟的碎碎念,先声明全是的负能量。
podman 以前挺多文章,就是说 docker 这个不行,那个不行,所以开发 podman,言外之意就是 docker 和 redhat 公司不对付,领导要下面编一点 docker 的缺点出来,把生态搞过来,仗着内核比较熟悉,开始挖 docker 的墙角。
podman 这工具出了也几年了,最近看了一下,发现还一直在活跃开发,文档也全了,功能也多了,yum 也能装了,github一万多星,redhat 的手册里也加入了。我一寻思,这是不是就代表着能用了? 然后发现,并不是。
优点之一,podman 有 pod,用 k8s 的语法,体验了一下,和 docker compose 这种社区自产自销的工具,易用性差了千八百倍,用这个是和自己过不去。
优点之二,podman 可以 rootless 。在 podman 起步的时候,docker 似乎永远没有支持 rootless 的想法,现在 docker 也支持了,没啥区别。
优点之三,没有 docker daemon,轻量。这个也没感受出来,docker daemon 也就监听个 sock,没占很多资源。docker 包确实大,但 nodejs 一个包一百多兆都有人承受,这点性能不算啥。
优点之四,一键生成 k8s pod 文件,一键生成 systemd unit,这个使用下来 还不如手写。
podman 优点都飘飘欲坠,可有可无,然后是缺点都很扎实。
一个是性能差,编译慢,启动也慢,大家都用 runc 为啥性能会差呢?目测了一遍 issues,一个是 rootless 和 rootful 环境不一样,还有一些优化上的 BUG 。虽说我没测过,但只要是个人,应该怎么样都感觉不出来 docker 会比这玩意儿慢。
另一方面,podman 有些 BUG 会很离谱。比如 服务跑的好好的,podman ps 一下是空的,人都傻了。还有花样报错,今天找不到谁的 network 配置了,明天找不到哪个被删除的 container 了,可以说层出不穷。
然后是 rootless container 之间的网络通信,根本没有什么能通信的方式,全靠开端口 publish,走 localhost,那还隔离啥?放 host 不好吗?好在我现在用的比较轻量,也没到端口到处撞的程度。
这都不是最可怕的,上面这些咬咬牙也都过去了,总体 alias docker=podman 把坑坑洼洼都过去了没啥问题,关键是某些镜像,我目测是目测不出来什么不规范的地方,但 用 podman 和 docker 的表现不一致,装个镜像,挂载目录死活挂载不上。正常人都拿 docker 跑,谁跟你拿 podman 去跑,运行结果不一致,真的头都痛。
合着我是给人测 bug 来了,这玩意儿居然给我用出了早期 javascript 里各种奇技淫巧的感觉。喷完了,用 docker 。
1
jenlors 2021-09-12 21:51:23 +08:00
之前试用了一下果断弃了
|
2
sagaxu 2021-09-12 21:54:50 +08:00 1
|
4
cheng6563 2021-09-13 00:31:46 +08:00
只看中他的 rootless,用来在 CI 里跑各种任务用,就没打算让他运行什么正经服务。
|
5
swulling 2021-09-13 00:40:00 +08:00 via iPhone
其实都是自己的服务,没必要 rootless,徒增烦恼。
那种需要多租户甚至开放给外部的才需要。 |
6
plko345 2021-09-13 00:43:38 +08:00 via Android
我正准备试试呢,docker 的 daemon 也恶心
|
8
lancelock 2021-09-13 11:06:14 +08:00
我也试了一下 rootless,要额外配置,跑个服务经常有预期外的表现,找原因找的头痛,还是用 docker 得了
|
10
superhack 2021-09-13 11:38:05 +08:00
赞同你,生产上能替代 docker 还早着呢,目测一年半年够呛
|
11
0312birdzhang 2021-09-14 09:13:13 +08:00 via iPhone
哈哈哈,给大家避坑了
|
12
zeromake 2021-09-14 16:39:46 +08:00 via Android
我觉得还不如用 k3s,搞个正统的 k8s 环境好用,podman bug 都很奇怪而且都是正常使用会出现,复现率很高,我在公司用的 vm 里单机的 k3s 都稳的一批,都没出现过什么问题。
|
13
ragnaroks 2021-09-14 22:25:35 +08:00
我不用 podman 的原因是它没有 daemon ;
限制处理器、内存、用户是 systemd 本身就能做的事情,和容器最大的区别就是文件系统。 |
16
Hacc 2022-04-10 14:53:14 +08:00
我现在是在用 podman+crun ,rootless 之前的容器通信我就把那几个容器放一个 pod 里了,容器间设定只共享网络命名空间。
|