2022/02/22 use podman to replace docker engine

Martin Zhang 2025-06-10 14:30:36
Categories: Tags:

背景

使用docker需要基于root账户运行历来都是个痛点, 无论是命令行的麻烦(虽然可以用alias 来消除sudo 的使用), 还是数据的owner方面, 包括导出的tar, 以及挂载的本地文件, 都会出现只有root能访问的问题, 然而最近看到一篇文章 Docker 大势已去,Podman 即将崛起, 可能是解决这个问题的方案, 然而一直没有动力, 直到最近升级了docker engine, 导致本机一致无法运行 mysql 5.6 镜像的container, 就干脆卸载了docker 和 docker-compose, 转投podman 和 podman-compose.

安装

podman
Podman官网: https://podman.io

官方提供了各种平台的安装方式, 例如 Arch Linux:

1
sudo pacman -S podman podman-compose podman-dnsname

其中podman是主程序, 后面的 podman-composepodman-dnsname 是替换docker-compose 用的

配置以及支持包

重点是在账户下运行podman, 因此两个额外的支持包需要安装:slirp4netns, fuse-overlayfs , 分别是支持用户空间的网络和文件系统.

另一个必须的包是 shadow-utils, 在Arch Linux中是 shadow, 安装完成后, 修改文件 (如果没有可以用root用户创建)

然后使用命令让podman应用上面的修改

1
podman system migrate

默认情况下用户空间的podman不能绑定本机小于1024的端口号, 如果有特殊需要, 例如443, 则可以修改kernel的参数, 对Arch linux, 创建文件 /etc/sysctl.d/podman.conf

1
net.ipv4.ip_unprivileged_port_start=443

其他

1
unqualified-search-registries = ["docker.io"]
1
http_proxy = false