当前位置: 首页 > news >正文

[容器] Podman : 一款新型的容器引擎与容器管理工具

1 概述: Podman

  • 当我们谈论容器时,我们首先想到的默认工具就是Docker。但自从 Docker 诞生以来,容器领域已经有了很多发展,特别是在容器安全方面。Podman 是解决安全问题的项目之一。

  • Podman(POD Manager)是一个开源的无守护进程daemonless容器引擎,用于管理容器、容器镜像、容器卷和网络。

  • 它兼容 OCI 标准,可以运行 Docker 镜像,并且设计上与 Docker CLI 命令高度兼容。

什么是PodMan?比 Docker 更安全的竞品

  • Podman(POD Manager)是一款符合OCI标准的容器管理工具,提供与 Docker 类似的容器管理功能。

  • podman 的最佳功能之一是它能够运行无根容器

无根容器是在没有根权限(普通用户)的情况下运行和管理容器的概念。
安全角度来看,无根容器即使在容器受到攻击者破坏的情况下也不允许根访问,从而增加了额外的安全层。
您可以在此处了解【无根容器】的优点。

注意: Docker 也支持无根模式,但有一些限制。您可以在这里阅读相关内容。

  • Podman 也是无守护进程的(与 docker 不同)。

这意味着它没有守护进程并直接与 runc 交互(运行基于 OCI 规范的容器)。
在文章的最后,我补充了Docker 和 Podman 之间的区别。
另外,假设 Linux 中有两个用户。用户 a和用户 b。用户 a使用 podman创建的容器不能被用户 b修改,反之亦然。

2 安装使用

2.1 安装 Podman

  • 前往官方 Podman 安装文档。 在这里您可以找到 Windows、MAC 和 Linux 版本的所有安装命令。

注意:对于 Windows 和 Mac,podman 需要虚拟机来部署容器。

2.1.1 安装 on Ubuntu

Ubuntu 20.10 为例

  • 对于Debian 11 和 ubuntu 20.10 或更高版本,您可以使用以下步骤。
sudo apt-get install runc -y
sudo apt-get -y install podman
  • 对于 CentOS 7:
sudo yum -y install podman
  • 对于 MAC,安装 Podaman; 然后, 使用 podman machine 命令初始化基于QEMU的虚拟机。
brew install podman
podman machine init
podman machine start
  • 安装后,使用以下命令验证安装。
podman version

2.2 Podman 容器注册表配置

  • 默认情况下,Podman 配置有两个容器注册表。
  • https://quay.io/
  • https://hub.docker.com/
  • 您可以在以下文件中找到默认的 Podman 容器注册表配置。

/etc/containers/registries.conf

image

  • 您可以将自定义或私有容器注册表添加到此配置。

例如,Google容器注册表、AWS ECR、自托管私有注册表等。

  • 如果您想使用registry中的其他私有容器镜像,可以使用命令登录registry podman

例如,要登录 docker hub:

podman login docker.io

登录后,您将能够使用podman命令从 docker hub 中提取容器镜像

  • 如果您希望为【特定用户】拥有不同的【注册表配置】,您可以registries.conf在用户目录中创建单独的容器注册表信息。
$HOME/.config/containers/registries.conf

Podman 容器存储

  • 每个系统用户都有自己的容器存储。

这意味着,如果您尝试从不同的用户登录中提取映像,它将从【远程注册表】而不是【本地映像】中提取【映像】。

  • 例如,
  • 对于root 用户,容器存储在 /var/lib/containers/storage 目录中
  • 对于其他用户,容器存储在 $HOME/.local/share/containers/storage/ 目录中

使用 Podman 管理容器

  • 您可以像使用 docker 一样管理容器。但是,我们将使用 podman 作为带有类似于 docker 标志的命令,而不是 docker 命令。

  • 此外,您可以使用任何没有 sudo 权限的用户运行 podman 命令。

拉取镜像

  • 首先,让我们尝试拉取镜像

默认情况下,podman 首先在 quay.io 中搜索镜像,然后在 docker.io 中搜索。
如果 quay.io 中不存在映像,podman 会在 docker.io 中搜索并拉取该映像。
因此,最好指定注册表端点的完整映像名称。例如:

podman pull docker.io/nginx
podman pull quay.io/quay/busybox

创建并运行容器

  • 让我们从 dockerhub 注册表运行 Nginx 容器。

以下命令运行具有主机端口映射的 Nginx 容器 8080

podman  run --name docker-nginx -p 8080:80 docker.io/nginx
  • 如果您看到的话,上面的 podman 命令相当于 docker 命令和标志。

  • 无根模式(【普通用户模式】)下不能使用低于 1024 的端口。

因为【普通用户容器命名空间】确实具有映射这些端口的权限。
如果您想使用 podman 映射小于 1024 的主机端口,您应该以 root 用户或使用 sudo 权限运行 podman,如下所示:

sudo podman run --name docker-nginx -p 80:80 docker.io/nginx

检查映射的端口

  • 您可以使用以下命令检查映射的端口。-l 返回最新容器的详细信息。
podman port -l

检查容器

  • 您可以使用检查命令检查容器。
podman inspect -l

其他命令

  • 其他停止、移除和删除容器的命令与 docker 命令的工作方式相同。
  • 举几个例子:
podman images
podman ps
podman ps -a
podman stop <container-name>
podman rm <container-name>

帮助手册(help)

  • 运行 help 命令以了解所有可用的 podman 命令。
podman --help

使用 Podman 构建容器镜像

Y 推荐文献

  • Docker 基础教程(概念/原理/基础操作) - 博客园/千千寰宇

X 参考文献

  • 图解Podman从入门到精通 - 掘金
  • 什么是Podman?能否替代Docker?Podman快速入门 - Zhihu
http://www.jsqmd.com/news/65652/

相关文章:

  • 从0构建深度学习框架——揭秘深度学习框架的黑箱
  • SVPWM基础
  • JDK的安装与删除
  • C语言字符串函数学习 - hillo
  • 实用工具:担心腾讯ACE把你的硬盘扫坏了?用DiskGenius一分钟检测硬盘是否损坏
  • 百度之星 2025 游记
  • 北京上门收酒服务权威推荐榜,四家机构获评优质服务商
  • 20232406 2024-2025-1 《网络与系统攻防技术》实验八实验报告
  • Win10最终版下载 d485系统站
  • AI元人文构想全维解读:从意义行为原生到文明共生体
  • 一分钟教你限制腾讯游戏ACE扫盘:告别硬盘损耗与游戏卡顿的完整指
  • 一文读懂激活函数
  • P2163 [SHOI2007] 园丁的烦恼 做题笔记
  • 【Linux篇】信号从哪来?到哪去?—— Linux信号的产生方式与保存机制 - 实践
  • 20232424 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 北京上门收酒机构调研排行:四家靠谱机构推荐,藏家变现别踩坑
  • fhq-Treap学习笔记
  • Qt Thread and Worker
  • 2025成都最新旧房装修改造公司 TOP5 评测!金牛等十区装修品牌行业数据市场口碑及选择指南,环保整装 + 品质施工权威榜单发布,匠心赋能焕新理想居家环境
  • 酵母双杂交(膜系统)服务:解锁膜蛋白互作密码,赋能药物研发与机制研究
  • 解码常对象与运算符重载
  • 2025最新成都二手房装修公司top5推荐!成都优质家装品牌权威榜单发布,环保健康与品质工艺双保障助力理想家居焕新
  • 实操教程:MindSpore中确定神经网络隐藏层与输出层神经元数量
  • 【3FS】条带化
  • 一文读懂MindSpore的construct方法:神经网络的“自动流水线”
  • 洛谷U639316 最长子串询问 题解 字符串哈希+二分
  • AI规范编程 - specify-Kit
  • 2025最新成都精装房装修公司TOP5评测!一站式服务+品质保障,成都十区装修服务商权威榜单发布,重塑居家生活新体验
  • why North Korean are extremely anti-American, and think Nihon is a puppet of A.
  • 可变参数模版中的折叠表达式