podman vs docker
最近发现了podman,一些介绍podman的文章标题起的比较震惊,大致就是docker大势已去、podman是下一代容器工具云云,我呢平时也是比较喜欢使用docker的,看到如此贬低docker我怎么能忍受,马上安装个podman跑一下看看。
本次对比使用pve创建配置相同的lxc分别安装docker和podman,并安装mysql对比下占用情况,
共3个lxc,均512m内存、8gb硬盘,无swap,系统为debian 12,因为是lxc,所以安装docker和podman的容器均需开启嵌套,podman容器需要额外勾选fuse,另一个lxc使用apt安装mysql作为对照。
podman与docker对比的视频介绍:Podman vs. Docker - YouTube
docker与podman的安装
均按照官方文档进行安装
docker安装:Install Docker Engine on Debian | Docker Docs
podman安装:Podman Installation | Podman
podman compose、docker compose均未安装
101(Docker)是我的主力鸡,不参与本次对比😋
可以看到podman比docker更加轻量,使用top命令看看差在什么地方
lxcDocker容器
top - 15:26:43 up 4 min, 1 user, load average: 0.31, 1.18, 2.88
Tasks: 18 total, 1 running, 17 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.7 us, 3.8 sy, 0.0 ni, 89.9 id, 0.1 wa, 0.0 hi, 0.2 si, 0.0 st
MiB Mem : 512.0 total, 252.8 free, 59.0 used, 200.2 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 453.0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 20088 11264 8704 S 0.0 2.1 0:00.29 systemd
46 root 20 0 32892 11008 10112 S 0.0 2.1 0:00.07 systemd-journal
84 root 20 0 5868 3328 2688 S 0.0 0.6 0:00.00 dhclient
89 systemd+ 20 0 17860 8448 7424 S 0.0 1.6 0:00.05 systemd-network
93 root 20 0 3600 2048 1920 S 0.0 0.4 0:00.00 cron
94 message+ 20 0 9120 4608 4224 S 0.0 0.9 0:00.02 dbus-daemon
99 root 20 0 16536 7424 6528 S 0.0 1.4 0:00.05 systemd-logind
147 root 20 0 1356192 42224 30464 S 0.0 8.1 0:00.15 containerd
149 root 20 0 2516 1408 1408 S 0.0 0.3 0:00.00 agetty
150 root 20 0 6120 3712 3328 S 0.0 0.7 0:00.01 login
151 root 20 0 2516 1664 1664 S 0.0 0.3 0:00.00 agetty
158 root 20 0 15408 9344 8064 S 0.0 1.8 0:00.01 sshd
293 root 20 0 42652 4628 4096 S 0.0 0.9 0:00.00 master
294 postfix 20 0 43040 6656 6144 S 0.0 1.3 0:00.00 pickup
295 postfix 20 0 43088 6784 6272 S 0.0 1.3 0:00.00 qmgr
302 root 20 0 1536100 76284 51584 S 0.0 14.6 0:00.32 dockerd
439 root 20 0 5224 4352 2816 S 0.0 0.8 0:00.01 bash
lxcPodman容器
top - 15:26:44 up 4 min, 1 user, load average: 0.29, 1.16, 2.87
Tasks: 16 total, 1 running, 15 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.6 us, 4.9 sy, 0.0 ni, 87.7 id, 0.1 wa, 0.0 hi, 0.3 si, 0.0 st
MiB Mem : 512.0 total, 407.9 free, 21.2 used, 83.0 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 490.8 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 20060 11136 8576 S 0.0 2.1 0:00.32 systemd
48 root 20 0 32952 10624 9728 S 0.0 2.0 0:00.06 systemd-journal
81 root 20 0 5868 3584 2816 S 0.0 0.7 0:00.00 dhclient
86 systemd+ 20 0 17860 8448 7424 S 0.0 1.6 0:00.05 systemd-network
93 root 20 0 3600 2048 1920 S 0.0 0.4 0:00.00 cron
94 message+ 20 0 9120 4480 4096 S 0.0 0.9 0:00.02 dbus-daemon
97 root 20 0 16536 7424 6528 S 0.0 1.4 0:00.06 systemd-logind
168 root 20 0 2516 1408 1408 S 0.0 0.3 0:00.00 agetty
170 root 20 0 6120 3712 3328 S 0.0 0.7 0:00.02 login
171 root 20 0 2516 1408 1408 S 0.0 0.3 0:00.00 agetty
174 root 20 0 15408 9344 8064 S 0.0 1.8 0:00.02 sshd
326 root 20 0 42652 4628 4096 S 0.0 0.9 0:00.00 master
327 postfix 20 0 43040 6784 6144 S 0.0 1.3 0:00.00 pickup
328 postfix 20 0 43088 6912 6400 S 0.0 1.3 0:00.00 qmgr
335 root 20 0 4980 4096 2816 S 0.0 0.8 0:00.01 bash
338 root 20 0 8564 4608 2688 R 0.0 0.9 0:00.11 top
可以看到podman不需要containerd,也没有常驻在后台的守护进程,相比docker节省了40m左右的内存和400m+的硬盘,这对于低配鸡或许有点意义。
MySQL安装
docker安装MySQL:docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql
podman安装MySQL:podman run --name mysql -e MYSQL_ROOT_PASSWORD=password -d docker.io/mysql
命令基本一样,拉取的也是docker hub的镜像。
这次使用一个新lxc通过apt安装MySQL,过程大致如下
apt update
apt install -y lsb-release gnupg
wget https://dev.mysql.com/get/mysql-apt-config_0.8.28-1_all.deb
dpkg -i mysql-apt-config_0.8.28-1_all.deb
apt update
apt install mysql-server
相比上面两种使用容器安装的方法要慢上很多,应该比编译安装快吧👀
lxcDocker容器安装了docker、MySQL
lxcPodman容器安装了podman、MySQL
lxcDebian容器安装了MySQL
硬盘及内存占用依次递减,cpu占用几乎一样,以MySQL为例软件安装速度为1=2>3
总结
podman在日常使用上与docker几乎一致,没有什么动力将主力机的docker换成podman,但是以后新购vps会考虑使用podman。
于我这种普通玩家来看,docker与podman这种容器技术在部署软件时更加方便快捷,迁移也是比较简单,docker的文档、指南、教程更加丰富,podman可以以非root用户运行更加安全(无感),没有daemon更加轻量。