在读书上,数量并不列于首要,重要的是书的品质与所引起的思索的程度。——富兰克林
Github: https://github.com/containers/podman/
官方网站: https://podman.io/
最近开始研究容器化技术,发现了Podman这个非常有趣的开源项目。它是一个专为Linux平台设计的无守护进程容器引擎,完全兼容OCI(Open Container Initiative)标准,能够作为Docker的替代品,甚至在某些场景下更具优势,例如本地开发与测试。
与传统的Docker不同,Podman的一个显著特点是它是无守护进程的,这意味着它不需要像Docker那样有一个长期运行的服务。这种设计使得Podman更加轻量化,并且在安全性上也有一定的提升,因为它能够以非root用户运行容器。
安装非常简单,可以直接使用系统的包管理工具。例如在Fedora上,只需要运行:
1 |
|
在Debian或Ubuntu上,则可以使用:
1 |
|
安装完成后,Podman的命令基本与Docker一致。比如拉取镜像:
1 |
|
运行容器:
1 |
|
使用起来非常直观,几乎不需要额外学习成本。
如果需要管理容器和镜像,Podman提供了一套与Docker兼容的命令行工具,比如:
- 查看运行中的容器:
1 |
|
- 列出镜像:
1 |
|
- 删除镜像:
1 |
|
Podman在运行容器时不依赖守护进程,因此每个容器都由独立的进程管理。这种设计带来的另一个好处是可以直接通过系统的进程工具(如ps
或top
)查看和管理容器。这一点在需要调试或优化容器性能时非常有用。
另外一个亮点是Podman支持Pod的概念。Pod是一个共享网络和存储空间的容器组,类似于Kubernetes中的Pod。这使得在本地开发Kubernetes应用时,Podman成为一个非常友好的工具。创建Pod的命令也很简单:
1 |
|
将容器加入Pod:
1 |
|
对于习惯于Docker的用户,Podman还提供了一个叫podman-docker
的工具,可以让Docker命令直接调用Podman。只需要安装这个工具,几乎可以无缝迁移到Podman。
另一个非常吸引人的功能是Podman的Rootless模式。这种模式允许用户在没有root权限的情况下运行容器,极大地提高了安全性。在多用户共享环境中,这种设计显得尤为重要。
如果需要构建镜像,Podman也支持使用Dockerfile进行构建,命令与Docker完全一致:
1 |
|
它还支持生成和运行Systemd服务文件,用于将容器配置为Linux服务。例如:
1 |
|
生成的服务文件可以直接用Systemd管理,非常适合需要长期运行的容器化服务。
除了强大的功能,Podman的生态也在不断发展。它提供了Podman Desktop图形界面,便于管理容器和镜像。此外,与Buildah、Skopeo等工具的集成使得Podman的使用场景更加广泛。这些工具分别用于构建和分发容器镜像,形成了一个完整的容器化工作流。
经过一段时间的使用,感觉Podman特别适合那些关注安全性、需要无root运行容器的场景。同时,它对Kubernetes的支持也让它成为开发K8s应用的利器。如果你正在寻找一个轻量级、兼容性强的容器引擎,不妨试试Podman。