podman 替代 docker ? centos Stream 10 已经弃用docker,开始用podman了!

👨‍🎓博主简介

  🏅CSDN博客专家
  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


文章目录

  • 一、什么是 podman?
  • 二、部署 podman
  • 三、podman 参数
    • 1、podman 镜像管理
    • 2、podman容器管理
    • 3、podman运行容器命令
  • 四、附加:修改podman 存储路径
    • 1、podman 中没有数据修改存储路径
    • 2、podman 中有数据迁移修改存储路径
  • 五、参考文章

一、什么是 podman?

在这里插入图片描述

  Podman 是一个开源项目,可在大多数 Linux 平台上使用,并位于GitHub 上。Podman 是一个无守护进程的容器引擎,用于在 Linux 系统上开发、管理和运行 Open Container Initiative (OCI) 容器和容器映像。Podman 提供了一个与 Docker 兼容的命令行前端,它可以简单地为 Docker cli ,alias docker=podman。Podman 还提供了一个套接字激活的 REST API 服务,以允许远程应用程序启动按需容器。此 REST API 还支持 Docker API,允许 docker-py 和 docker-compose 的用户与 Podman 作为服务进行交互。

  Podman 控制下的容器可以由 root 或非特权用户运行。Podman 使用libpod库管理整个容器生态系统,包括 pod、容器、容器映像和容器卷。Podman 专注于帮助您维护和修改 OCI 容器镜像的所有命令和功能,例如拉取和标记。它允许您在生产环境中创建、运行和维护从这些映像创建的容器。

  Podman 服务仅在 Linux 平台上运行,但 podman 远程 REST API 客户端存在于 Mac 和 Windows 平台上,并且可以通过 ssh 与运行在 Linux 机器或 VM 上的 Podman 服务进行通信。Mac 客户端。

二、部署 podman

正常 centos Stream 10里面是自带的有podman服务的;目前只知道 centos Stream8-10 系统会自带podman服务,其他系统没安装过,可自行查看podman --version

离线安装:podman 离线安装包


Podman 在 CentOS 8 和 Stream 的 AppStream 存储库中可用,可直接进行yum安装。

# 安装podman
yum -y install podman# 查看podman版本号
podman --version

image-20240708155326314

这样就安装成功了;

  • 启动服务并配置开机自启
# 设置开机自启
systemctl enable podman
# 启动podman服务
systemctl start podman
# 重启podman服务
systemctl restart podman
# 停止podman服务
systemctl stop podman
# 查看podman服务状态()
systemctl status podman

三、podman 参数

podman常用参数和docker常用参数都是一样的;这里举例几个就行,具体的可以查看docker的命令参数:linux(centos)中部署docker(步骤超全,含带一些发展史和一些概念),查看后面的docker镜像管理、docker容器管理、docker运行容器命令

1、podman 镜像管理

#列出所有的镜像
[root@podman ~]# podman images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
命令作用举例选项
podman search搜索镜像podman search busybox-f 按条件过滤
podman pull拉取镜像podman pull busybox:latest
podman push推送镜像到仓库podman push busybox:latest
podman tag为镜像修改或制作标签podman tag busybox:latest busybox:v1
podman rmi删除镜像podman rmi busybox:v1
podman save将镜像保存为tar包podman save -o centos7.tar centos:7-o 指定生成tar包名称
podman load将tar包保存的镜像导入podman load -i centos.tar-i 指定读取的tar包名称
podman import通过一个tar包创建镜像podman import centos-7.tar.gz centos7:v1
podman histroy查看镜像创建的历史podman history centos:7

podman中还提供了专门管理镜像的子命令podman image,用法与podman命令类似。

podman image 命令说明
podman images列出所有镜像
podman image ls列出所有镜像
podman image pull拉取镜像
podman image load导入镜像
podman image rm删除镜像
podman image inspect查看镜像的详细信息
podman image histroy查看镜像的创建记录
podman image push拉取镜像
podman image save导出镜像
podman image tag设置标签(修改版本)
podman image prune删除未使用的镜像
podman image buildpodmanfile构建镜像

2、podman容器管理

podman container命令说明举例选项
podman ps -a查看所有的容器
docekr ps查看所有的正在运行的容器
podman container ls查看运行的容器podman container ls-a/-q
podman container create创建容器但不运行podman container create nginx
podman container start启动容器podman start nginx
podman container stop关闭容器podman stop nginx
podman container restart重启容器podman restart nginx
podman container inspect查看容器的信息podman inspect nginx
podman container rm删除容器podman rm -f nginx-f强制删除
podman container rename给容器重命名podman rename nginx nginx2
podman container prune删除没有运行的容器
podman container pause暂停容器运行(挂起)
podman container unpause继续运行容器
podman container port列出端口映射podman port nginx2
podman container logs获取容器日志信息podman logs nginx2
podman container kill杀死正在运行的容器podman kill nginx2
podman container stats查看容器资源使用情况podman stats nginx2
podman container top查看容器的进程podman top nginx2
podman container diff对比容器文件变化 podman diff nginx nginx2
podman container cp容器与主机间文件复制podman cp a.txt nginx:/home/
podman container exec创建容器podman exec -itd–name nginx nginx:v1创建容器并运行
podman container export容器文件导出为tarpodman export nginx.tar nginx
podman container commit提交容器变化为新镜像podman commit nginx
podman container update更新容器配置podman update --restart=always nginx
podman container wait阻塞容器
podman container run运行一个podman容器podman run -itd --name nginx nginx:v1

3、podman运行容器命令

podman container run命令是根据指定镜像创建一个容器并启动运行。如果本地没有该镜像,则从podman仓库中拉去镜像。所以
podman container run = podman image pull + podman container create + podman container start
命令格式:podman container run [选项] 镜像名称|镜像ID [command]
常用选项:

参数解析
-d后台运行容器,返回容器ID,运行守护进程式容器
-i以交互模式运行容器,通常与 -t 同时使用;
-t为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P随机映射端口,容器内部端口随机映射为主机端口
-p指定端口映射, -p 主机端口:容器端口
- -expose指定暴露端口或端口范围
- -name指定生成容器的名称
-h指定容器的主机名称
-v映射容器外与容器内的目录
- -net指定podman网络模式(bridge/host/none/container)
- -restart指定是否开机自启
- -privileged使用该参数,container内的root拥有真正的root权限。
- -dns指定DNS服务器地址,默认与主机一致
-e设置环境变量
- -env-file从指定文件读取环境变量
1.运行交互式容器 
[root@podman ~]# podman container run -it --name='centos-1' centos:7 /bin/bash
[root@3ad7e1a5e55f /]#
直接退出,运行exit,容器会结束运行
[root@podman ~]# podman container ls -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                     PORTS     NAMES
3ad7e1a5e55f   centos:7   "/bin/bash"   39 seconds ago   Exited (0) 6 seconds ago             centos-1
可以使用podman container start命令启动容器
[root@podman ~]# podman container start centos-1 
centos-1
[root@podman ~]# podman container ls -a
CONTAINER ID   IMAGE      COMMAND       CREATED              STATUS         PORTS     NAMES
3ad7e1a5e55f   centos:7   "/bin/bash"   About a minute ago   Up 2 seconds             centos-1
运行容器,不结束容器退出
[root@podman ~]# podman container run -it --name='centos-2' centos:7 /bin/bash
[root@764b82cb892f /]#(ctrl+pq)2.启动守护进程式容器
[root@podman ~]# podman container run -d nginx:latest 
cef133be2d53c0d4921ceba34855e7dc250984191d10d3dfedf82195e9d85d3c
[root@podman ~]# podman ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
cef133be2d53   nginx:latest   "/podman-entrypoint.…"   6 seconds ago   Up 5 seconds   80/tcp    relaxed_lichterman
764b82cb892f   centos:7       "/bin/bash"              3 minutes ago   Up 3 minutes             centos-2
3ad7e1a5e55f   centos:7       "/bin/bash"              5 minutes ago   Up 4 minutes             centos-1

四、附加:修改podman 存储路径

podman和docker一样,默认都是存在与/var/lib/下的,一般镜像和容器都很大,可能会导致根磁盘空间占用过大,如果/根目录下空间满了,我们就要考虑给容器和镜像换位置;一般来说/根目录起初不会设置的很大,后续都会再加硬盘来扩容空间,所以这时候我们挂了一个磁盘,要把podman数据存储到比如/data/podman下,那么就如下操作就可以了;

1、podman 中没有数据修改存储路径

  • 打开 Podman 配置文件

没有就创建一个

sudo vim /etc/containers/storage.conf
  • 编辑存储配置:
[storage]
driver = "overlay"
runroot = "/data/podman/containers/run"
graphroot = "/data/podman/containers/storage"
  • 重新加载并启动podman服务
sudo systemctl daemon-reload
sudo systemctl restart podman
  • podman info 查看docker配置路径
sudo podman info

在这里插入图片描述

这样就修改成功了,如果不放心可以ls /data/podman/containers/storage/看看;

  • 查看 podman 服务运行状态
systemctl status podman

在这里插入图片描述

运行状态,那么就没问题了,接下来可以试试拉取镜像或者导入镜像

2、podman 中有数据迁移修改存储路径

注意:如果podman中已经存在了数据,那么就需要吧/var/lib/containers下的和podman相关的都挪到新的存储目录下然后在修改boltdb数据库里配置并重启数据库和podman服务方可生效;
切记:先移动或复制 --》 在修改配置文件 --》 在修改boltdb数据库 --》 在重启服务。

podman在数据库中可能会存储有运行配置,默认是在/var/lib/containers/storage/libpod/bolt_state.db中的,所以如果该数据库中存储了运行配置,则只修改了/etc/containers/storage.conf中的配置是不起作用的,podman会优先使用数据库中存储的配置,这点很坑。我们在修改了/etc/containers/storage.conf中的配置后,将在/var/lib/containers/复制到修改的路径下,重启之后,可以使用如下的命令来查看详细信息:

# 创建一个storage.conf文件
sudo vim /etc/containers/storage.conf# 编辑配置文件
[storage]
driver = "overlay"
runroot = "/data/podman/containers/run"
graphroot = "/data/podman/containers/storage"# 重启podman服务
sudo systemctl daemon-reload
sudo systemctl restart podman# 查看podman服务状态
systemctl status podman

在这里插入图片描述

没有启动起来,报错了;

# 查看podman报错详细信息
sudo podman info --log-level=debug

在这里插入图片描述
所以如果bolt数据库存储了相关配置,那么无论怎么修改/etc/containers/storage.conf中的配置都会被重载而不起作用。
bolt_state.db又是一种小众的数据库,格式为bolt,目前BoltDB不支持直接修改和查看数据库内容,需要使用专门的bolt数据库工具才能查看和修改。
https://github.com/etcd-io/bbolt 页面罗列了不少bolt工具,笔者选用了boltdbweb这款Go写的Web工具来查看和修改。

在这里插入图片描述

打开runtime-config可以看到里面有graph-root就是podman的存储路径;

在这里插入图片描述

这里可以修改graph rootstatic dirvolume path配置,也可以直接删除掉,让podman直接使用/etc/containers/storage.conf中的配置。

注意,bolt_state.db文件非常重要,如果之前已经有很多容器,则里面存储了很多非常重要的信息,如果丢失,则之前的容器就废了,所以在操作前一定要备份。


修改数据库这边我没有弄,参考的: 改变podman的存储路径 - witton,总之,如果数据多的话先备份,而且并不建议更换。


五、参考文章

文件名文件连接
改变podman的存储路径 - wittonhttps://blog.csdn.net/witton/article/details/128497746

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/43564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈React

forwardRef和useImperativeHandle的联动使用 import React, { useImperativeHandle, useRef } from "react" import { forwardRef } from "react"const CustomInput forwardRef((props, ref) > {const inputRef useRef<HTMLInputElement>(null…

解决MCM功率电源模块EMC的关键

对MCM功率电源而言&#xff0c;由于其工作在几百kHz的高频开关状态&#xff0c;故易成为干扰源。电磁兼容性EMC&#xff08;Electro Magnetic Compatibility&#xff09;&#xff0c;是指设备或系统在其电磁环境中符合要求运行并不对其环境中的任何设备产生无法忍受的电磁干扰的…

浪潮天启防火墙TQ2000远程配置方法SSL-xxx、L2xx 配置方法

前言 本次设置只针对配置VXX&#xff0c;其他防火墙配置不涉及。建议把防火墙内外网都调通后再进行Vxx配置。 其他配置可参考&#xff1a;浪潮天启防火墙配置手册 配置SSLVxx 在外网端口开启SSLVxx信息 开启SSLVxx功能 1、勾选 “启用SSL-Vxx” 2、设置登录端口号&#xff0…

springboot零食盒子-计算机毕业设计源码50658

目 录 1 绪论 1.1 研究背景 1.2研究意义 1.3论文结构与章节安排 2 微信小程序的零食盒子系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 微信…

力扣-排序算法

排序算法&#xff0c;一般都可以使用std&#xff1a;&#xff1a;sort&#xff08;&#xff09;来快速排序。 这里介绍一些相关的算法&#xff0c;巩固记忆。 快速排序 跟二分查找有一丢丢像。 首先选择一个基准元素&#xff0c;一般就直接选择第一个。然后两个指针&#xff0c…

安卓逆向经典案例——XX优品(uniapp)

uni-app逆向 uniapp的目录结构 有一个io文件夹&#xff0c;下面有dcloud uniapp UniApp 可以用于开发 H5 应用&#xff0c;但它不仅仅局限于 H5 应用。UniApp 的特点包括&#xff1a; 1. 跨平台&#xff1a;可以一套代码同时生成适用于多个平台&#xff08;如 iOS、Android、…

Java---数组

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励下吧~ 前言 无论c语言还是java数组都是重中之重&#xff0…

【简历】湖南某一本大学:JAVA实习简历指导,面试通过率比较低

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这个同学的学校是重点一本院校&#xff0c;这种学校背景我们建议大家尝试投一下大厂&#xff0c;然后投递主体在中厂。但是因为项目经历…

旷野之间12 - 内容创作用的最佳大模型评测

​​​​​​ 我正在做一个项目,需要我找出最适合内容创作的 LLM。我查看了 lmsys 排行榜上的顶级模型,阅读了其他人对这些模型的评价,查看了顶级 LLM 的模型卡,在没有明确答案后,我决定对所有这些 LLM 进行测试,以完成不同的内容创作任务。 评估模型 我想要评估的模型…

在iPhone / iPad上轻松模拟GPS位置 AnyGo for Mac

在iPhone / iPad上轻松模拟GPS位置 AnyGo for Mac AnyGo for Mac是一款专为Mac电脑用户设计的虚拟定位工具。它可以模拟你的GPS位置&#xff0c;让你的设备显示你在任何世界上的任何地方。无论你是想在游戏中虚拟移动&#xff0c;还是在社交媒体上分享虚拟的旅行照片&#xff0…

C 语言中如何实现字符串的拼接?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 【https://dwz.mosong.cc/cyyjc】通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&…

Objective-C 中的 isa 不再是简单的结构体指针

了解 Objective-C 中的 isa 指针内存结构 在 Objective-C 中&#xff0c;isa 指针是对象和类之间的重要桥梁。它不仅帮助运行时系统识别对象的类型&#xff0c;还参与了一些内存和性能优化。本文将深入讲解 isa 指针的内存结构&#xff0c;包括其在早期和现代实现中的演变。 …

Transformer 论文通俗解读:FFN 的作用

在经过前面3节关于 Transformer 论文的解读之后&#xff0c;相信你对提出 Transformer 架构的这篇论文有了一定的了解了&#xff0c;你可以点击下面的链接复习一下前3节的内容。 《Attention is all you need》通俗解读&#xff0c;彻底理解版&#xff1a;part1 《Attention …

合合信息“大模型加速器”亮相2024世界人工智能大会

文章目录 &#x1f4d1;引言一、大模型发展的挑战数据稀缺问题 二、大模型“加速器”解决方案概述文档解析引擎的特征 三、文档解析引擎的优势3.1 高速处理能力3.2 智能理解文档结构3.3 多种数据类型支持3.4 高精度数据提取3.5 应用广泛&#xff0c;适应性强 四、复杂图表解析4…

Auslogics Disk Defrag Pro v11激活版下载、安装、使用教程 (磁盘碎片整理工具)

前言 Auslogics Disk Defrag Pro 是一款支持 FAT16 文件系统的磁盘碎片整理工具&#xff0c;它可以快速整理磁盘碎片&#xff0c;使磁盘空间更加整洁&#xff0c;显著提升电脑的运行速度。该软件无需任何分析阶段&#xff0c;并且速度比大多数其他碎片整理软件更快。它可以帮助…

stm32 开发板可以拿来做什么?

STM32开发板可以用来做许多不同的事情&#xff0c;具体取决于您的应用需求和编程能力。我收集归类了一份嵌入式学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言类教学&#xff0c;敲个22就可…

详解太阳能控制器PWM / MPPT极简方案其设计要点,台湾远翔FP7209升压24V,30V,36V,42V,48V

文章目录 前言 一、单节电池升压9V、12V、24V方案 二、单节电池升压30V&#xff0c;36V&#xff0c;42V&#xff0c;48V方案 三、芯片介绍 FP7209X与FP7209M的区别&#xff1a; 四、单节电池升压成为市面上太阳能控制器首选的原因&#xff1f; 总结 前言 太阳能是一种环保…

定时器TIM配置微妙延时函数

定时器TIM配置微妙延时函数 文章目录 定时器TIM配置微妙延时函数开胃小菜&#xff08;BOOT0、BOOT1&#xff09;Boot0Boot1&#xff08;如果有&#xff09; 三种定时器高级控制定时器&#xff08;TIM1&#xff0c;TIM8&#xff09;通用定时器&#xff08;TIM2, TIM3, TIM4, TIM…

基于Intel Chainer 和姿势检测的动作识别(人体、面部、手部关键点识别动作识别)

项目概述 目标 开发一个能够实时或近实时识别特定动作的系统&#xff0c;如运动姿势、表情变化或手势控制。实现对人体关键点的精确追踪&#xff0c;以便于分析和理解人的动态行为。 技术栈 Intel硬件&#xff1a;可能使用Intel的高性能计算平台&#xff0c;如Xeon处理器或…

【国潮】国产化系统甲方问题总结

持续更新。。。。。。。。。。。。。。。 【国潮】国产化系统甲方问题总结 1. 安全性问题2. 可靠性和稳定性问题3. 性能问题4. 符合军事标准问题5. 兼容性和集成问题6. 维护和升级问题7. 项目管理问题8. 隐私和合规性问题9. 灾难恢复和备份问题10. 技术支持和培训问题 引言&am…