文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

podman容器技术怎么用

2023-06-29 10:48

关注

这篇文章主要介绍“podman容器技术怎么用”,在日常操作中,相信很多人在podman容器技术怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”podman容器技术怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、什么是podman与OCI

Podman是一个无守护进程、开源的原生容器工具,旨在基于 Open Containers Initiative ( OCI )组织及规范,让镜像容器能够轻松查找、运行、构建、共享和部署应用程序。

提到podman就不能不说说OCI,这个组织有点意思。Docker容器技术出现并且迅速风靡全球,为传统的持续集成与持续发布领域带来了革命性的变化。 这个时候各个大佬们(谷歌,Redhat、微软、IBM、Intel、思科)就有点坐不住了,大家一起喝喝茶聊聊天就决定要成立一个新的组织:OCI。这个组织成立的目的很明显,就是要防止容器技术被docker一家垄断。docker方面虽然心不甘、情不愿,但是也没有什么太好的办法,也加入了该组织,毕竟胳膊拧不过大腿。另外还有以下几个原因

有的朋友说podman是docker运行、构建、共享的辅助工具,这么说并不正确哈,podman目前的发展其本身就是一种独立的容器技术,其运行时环境不依赖于docker。

二、docker有什么硬伤?

硬伤一:docker存在一个名为dockerd 的进程,会占用比较多的CPU资源。同时一个dockerd守护进程还可能导致单点故障的问题,该守护进程挂掉了,容器也就无法正常提供服务。

硬伤二:docker守护进程以root用户运行,这给操作系统的安全性和容器安全性带来了非常大的挑战。

然而Podman 不需要以 root 身份运行的守护进程,Podman 容器的运行权限与启动它们的linux用户相同,这解决了一个重大的安全问题。Podman 是一个无守护进程的容器引擎,并且Podman 不需要守护进程来启动和管理容器。这是两个开源项目之间的一个最重要区别。这也是笔者看好podman未来会代替docker成为主流容器技术的核心原因。

三、从docker过度到podman非常easy

如果你使用过docker的CLI命令行,podman几乎没有任何的区别,只需要把docker换成podman即可,参数顺序、含义都是一样的。如:

docker pull nginx换成podman pull nginx即可

如果你不想将docker命令换成podman,因为这样需要修改以往的脚本。也可以通过映射命令alias docker=podman来实现,这样就可以无缝的将docker迁移到podman环境下使用。

另外容器镜像格式方面在 Docker 和 Podman 之间也是完全兼容的。所以现有的镜像,不论是docker官方镜像,还是我们以往自己构建的docker镜像,都可以在podman环境下使用。

四、上手podman

4.1.安装

下面我们就来简单的搞一搞,在CentOS操作系统可以直接使用yum命令安装podman。事先说明的是我这个是一台新的最小化安装的CentOS7虚拟机,并不包含docker,也不曾安装。

yum -y install podman    # root用户安装

查看版本

# podman versionVersion:            1.6.4RemoteAPI Version:  1Go Version:         go1.12.12OS/Arch:            linux/amd64

新建podman用户,后续使用该用户运行容器。

adduser podman   # root用户新建podman用户
adduser podman   # root用户新建podman用户

4.2.CentOS7环境下需要做的特殊处理

出于上文中所说的安全性考虑,我们不使用root用户操作镜像及容器。所以需要做如下的一些配置。

如果你使用CentOS7,需要做如下的一些特殊处理。其他的操作系统可能需要不同的解决方案,这些解决方案基本大同小异。

如果你使用root用户运行镜像容器,这些特殊处理就不需要做,直接就可以用

CentOS7默认关闭用户namespace,将它打开

echo 10000 > /proc/sys/user/max_user_namespaces;grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)";echo "user.max_user_namespaces=10000" >> /etc/sysctl.conf;

4.3. 配置非root用户id及组id范围

尝试在linux宿主机操作系统新建用户podman用户环境下执行nginx镜像拉取

su - podman                               # 切换用户为podmanpodman pull docker.io/library/nginx   # 执行拉取镜像

如果你有如下的报错信息

su - podman                               # 切换用户为podmanpodman pull docker.io/library/nginx   # 执行拉取镜像

或者如下报错信息

 Error processing tar file(exit status 1): there might not be enough IDs available in the namespace

请退出podman用户切换回到root用户(exit命令),执行下列命令,podman为运行容器的一个非root用户

echo "podman:100000:65536" >> /etc/subuidecho "podman:100000:65536" >> /etc/subgid

这段配置的作用就是设置一个容器内的操作系统与宿主机操作系统用户的uid、gid之间的映射关系。如上所示 100000 - 165535(100000 + 65535) 在宿主机的id就映射到容器内的 0-65535的用户。配置完之后执行如下命令

podman system migrate

官方解释上面的命令可以让配置生效,但是不知道什么原因,笔者执行该命令配置并未生效,而是重启了一下操作系统才生效。

五、在非root用户下容器镜像的使用

同样的先把root切换到宿主机的podman用户

su - podman

拉取镜像命令

$ podman pull docker.io/library/nginxTrying to pull docker.io/library/nginx...Getting image source signaturesCopying blob 1ae07ab881bd done  Copying blob 091c283c6a66 done  Copying blob 78091884b7be done  Copying blob 5eb5b503b376 done  Copying blob b559bad762be done  Copying blob 55de5851019b done  Copying config c316d5a335 done  Writing manifest to image destinationStoring signaturesc316d5a335a5cf324b0dc83b3da82d7608724769f6454f6d9a621f3ec2534a5a

查看镜像列表(在x用户下拉取的镜像,在y用户下是查看不到的)

$ podman imagesREPOSITORY                TAG      IMAGE ID       CREATED       SIZEdocker.io/library/nginx   latest   c316d5a335a5   2 weeks ago   146 MB

运行容器镜像

podman run -p 8080:80 -d docker.io/library/nginx

其他的命令就不一一的列举了,和docker命令运行方式是一模一样的,参数顺序、名称也是一摸一样的。

到此,关于“podman容器技术怎么用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯