运维实践|初识容器化工具Podman

前言

Docker技术 在容器化领域的广泛影响力和其曾经的快速崛起,可以说在以前是一种神级别的存在,Docker并没有发明容器技术,它将计算机代码打包成紧凑单元的方法,通过创建一套通用的开源工具和可重用的镜像,使容器技术成为主流。Docker使开发人员能够轻松地将他们的代码“ 容器化”并将其 从一个系统移动到另一个系统,迅速将其确立为行业标准,颠覆了在虚拟机(VM)上部署应用程序的主要方式。这使得Docker成为新一代最快被采用的企业技术之一。

然而,好景不长,尤其是多种因素导致的Docker在国内无法使用的问题,网络限制、镜像站失效等原因使得无法连接到Docker,国内的部分镜像站(如sjtu、ustc、百度、腾讯等)可能停止服务,导致用户无法从这些镜像站拉取Docker镜像。在容器技术日益成熟的今天,许多开发者和系统管理员都在寻找Docker的替代品。

Podman简介

Podman,作为一种相对较新的容器化工具,不仅提供了与Docker类似的功能,而且在安全性和效率上也有所增强。Podman是最好的免费和开源容器工具,由 Red Hat 公司开发并推广,旨在提供与Docker类似但更加安全和高效的容器管理体验。如果你对Docker感到满意,那么你可能会对Podman的无守护进程架构和根权限(root)运行的能力更感到惊喜。

官方地址: http://podman.io/

Githu源代码地址: https://github.com/containers/podman

Podman背景定位

Podman的定位是Docker的替代品,旨在解决Docker在使用守护进程(daemon)方面的一些安全和效率问题。Podman是 Red Hat 8CentOS 8 中默认的容器引擎,它基于开放容器倡议(OCI)标准开发、管理和运行容器和Pod。目前Podman提供安装版本(v5.2.4,最新的v5.3.0-rc1标记版本在开发测试中)、桌面工具(v1.13.2),并且支持 Apache License 2.0协议。Podman的主要开发语言为Go,完全借住Go语言的特性高效的并发与并行处理能力,如容器的启动、停止、资源分配等。Go语言的并发机制使得Podman能够高效地处理这些任务,提高了系统的整体性能和响应速度。

此外,Podman可以在多种操作系统上安装,包括但不限于Linux(如Fedora、CentOS、RHEL、Debian、Ubuntu等)。安装步骤通常包括更新软件包列表、安装Podman软件包以及验证安装。在配置方面,用户可以管理存储和网络配置,以及设置镜像仓库等。Podman还支持Windows(通过WSL)、MacOS、二进制源码安装的方式,具体的安装文档可以参考: http://podman.io/docs/installation

Podman核心特性

Podman的核心特性在官网做了详细的描述,快捷轻便、安全、开源和兼容。

  • 无守护进程架构

Podman不使用守护进程来管理容器,而是通过直接调用OCI兼容的运行时(如runc)来管理容器。这种架构设计减少了系统资源的占用,并提高了安全性。

  • 非root权限运行

Podman允许用户在没有完全root权限的情况下运行容器,提供了更好的安全保障。

  • 模块化设计

Podman采用模块化的方法,依靠专门的工具(如Buildah、Skopeo等)来完成特定的任务。这些工具分别负责构建镜像、进行镜像仓库操作等,使得Podman更加灵活和高效。

  • 与Kubernetes兼容

Podman旨在使用类似于Kubernetes的方法来构建、管理和运行容器。它支持Pod的概念,即一组容器的集合,这些容器在一个共同的命名空间中作为一个单元来管理。

  • 与Docker兼容的CLI接口

Podman提供了与Docker兼容的命令行前端来管理Docker镜像和容器。用户可以很轻易地从原本的Docker指令切换到Podman。

  • 兼容性良好

Podman在与VS Code、CLI、Github、Kubernetes做了很好的兼容。

应用场景与优势

Podman适用于需要 高效、安全地管理容器 的场景,特别是在对 安全性和资源占用有较高要求 的环境中。与Docker相比,Podman具有以下优势:

更加安全和轻量:无守护进程架构和非root权限运行提供了更好的安全保障。

更加灵活和高效:模块化设计和与Kubernetes的兼容性使得Podman更加灵活和高效。

易于迁移和集成:与Docker兼容的CLI接口使得用户可以轻松地从Docker迁移到Podman,或者将Podman与现有的Docker安装一起使用。

这里遗留一个问题, 既然Podman比Docker好,那么我们必须要切换到Podman吗

常用命令与操作

安装和一些注意点,可以参考官网的操作手册,Podman提供了丰富的命令来创建、启动、管理容器和镜像,这里提供一些常用命令,以作备忘。

## 创建并启动容器。
podman run

## 启动容器。
podman start

## 查看容器。
podman ps

## 终止容器。
podman stop

## 重启容器。
podman restart

## 进入容器。
podman attach

## 导出容器。
podman export

## 导入容器快照。
podman import

## 删除容器。
podman rm

## 查看日志。
podman logs

## 列出镜像。
podman images

## 删除镜像。
podman rmi

## 导出镜像。
podman save

## 导入镜像。
podman load

总结

Podman是一个功能强大、安全高效的容器运行时工具,它为用户提供了更加灵活和高效的容器管理体验。在选择工具上,我们应该根据自己的工作环境以及工作场景来选择相对应的容器,而不能盲目崇拜。好了,此文,分享到这里。

原文地址:https://cloud.tencent.com/developer/article/2461291