容器之podman基础

简介: 容器之podman基础

1. 什么是Podman


podman红帽(Redhat) 所研发的一款用于管理 OCI容器和Pod(类似k8s pod 非 k8s pod)的工具,RedHat 8Centos 8 默认容器引擎 且 无守护进程的引擎,兼容docker,熟悉dokcer很容易上手podman



2. podman 和 docker 的区别


2.1 podman 和 docker 架构

podman

image.png


docker

image.png


2.2 podman 和 docker 区别


2.2.1 守护进程


docker 采用守护进程模式来运行容器的

抽象出来即

image.png


管理镜像/创建容器 均有docker server管理,典型的客户端/服务器架构

当我们启动 docker后,使用 ps aux | grep docker-container即可以看到该 守护进程

image.png

docker查看版本的时候,会呈现客户端和服务器的版本


image.png

podman 采用无守护进程架构


image.png

相比之下,podman闲置资源要低得多,即 若没有容器运行,则podman不会运行,而docker即使没有容器运行,也会启动一个守护进程(docker Server)



2.2.2 安全

上节所述,docker使用守护进程模式,而 podman则使用的是无守护进程架构,那么2者到底有什么关系呢?

最主要的区别是: docker必须使用root权限 或者 在 docker群组中,才能使用 docker, 而 podman则无此限制。


我们模拟一下


docker

我们尝试新建用户,然后去使用docker操作新建镜像输出hello world

image.png


可见,报错了,报错原因是 权限不足,我们查看unix套接字的权限。

image.png



所以,需要root/sudo权限才行。

我们赋予dockerTest1 sudo 权限,再次尝试下。


image.png


podman

我们使用普通用户登入测试podman机器,顺利启动容器,并且输出 'hello world'

image.png

在别的用户下,使用podman是看不到这个容器的,podman能够做到容器隔离。


总结

若作为多用户而言,podman启动的容器是独立的,互不干扰,且不需要添加任何特权的情况下,均可运行,而docker启动的容器却是在一起的,只要有docker server权限,那么就可以操作所有容器,这是不安全的。



2.2.3 镜像构建


docker 可以使用 docker build/docker commit 构建镜像,而 podman 则不行,它是为运行容器而编写的,而非创建镜像,创建镜像则需要交给其他工具: Buildah , 此外它还有一个兄弟:


Skopeo ,后续再讲。

podman工具列举一下

Buildah: 用于构建、推送和签名容器镜像;

Skopeo:用于复制、检查、删除和签名镜像;

可见,podman是分模块处理的,而docker则是以一个整体来处理。




3. 如何快速入门使用podman


前文提到过,podman兼容docker,那么到底有多兼容呢,你甚至可以为 podman建立别名

image.png

因此,你可以在开发中使用docker, 而线上环境中可以使用podman,因为它足够安全。

我们尝试下使用podman启动一个nginx服务器

命令参考

$ podman pull nginx
$ podman run -d --name nginx -p 8080:80 nginx
$ podman ps
$ curl 127.0.0.1:8080



image.png



4.思考


为什么要使用podman,经过上面的对比,podmandocker的差别不言而喻,而podman作为红帽的产品,有独特的优势,且是docker目前最好的替代品。


为什么podman能够运行docker镜像,或者说是能够'代替'docker

因为dockerpodman都符合OCI,所以得以兼容,就像上述所讲,你甚至可以在开发环境中使用docker管理容器,而在生产环境中使用podman, 因为它相比于docker,更加安全。






相关文章
|
6月前
|
存储 安全 Linux
Podman入门全指南:安装、配置与运行容器
Podman入门全指南:安装、配置与运行容器
2951 1
|
Kubernetes Cloud Native Linux
容器引擎Docker与Podman解析
最近技术群里有朋友问我,不是说K8S要弃用Docker了吗?还要不要继续学习这块内容?是不是得改行卖白菜了?
313 0
容器引擎Docker与Podman解析
|
人工智能 Linux 应用服务中间件
podman容器操作
podman容器操作
597 2
|
存储 运维 应用服务中间件
podman 容器操作(下)
podman 容器操作(下)
535 0
podman 容器操作(下)
|
存储 安全 Ubuntu
最流行的容器运行时 Podman,如何拿下 18K Star?
Podman 是最流行的容器运行时之一,提供了与 Docker 类似的命令行接口,支持常见的容器管理功能,如启动、停止、重启和删除容器,以及构建、推送和拉取容器镜像等。Podman 还支持容器的网络和存储管理,可以使用CNI插件创建和管理容器的网络,支持使用多种存储驱动程序,如 overlayfs、btrfs 和 zfs 等。
439 1
|
前端开发 安全 Linux
下一代容器工具 Podman 与 Docker 的比较
`Podman` 与 `Docker` 最大的差别之一,`Podman` 是一种无守护程序的容器引擎,它控制下的容器既可以由 `root` 用户运行,也可以由非特权用户运行,而 Docker 控制下的容器只能由 `root` 用户运行。
2329 1
下一代容器工具 Podman 与 Docker 的比较
|
存储 Linux Go
podman利用criu进行容器迁移
podman利用criu进行容器迁移
387 0
|
Kubernetes JavaScript 安全
我们下一代的 Linux 容器工具:Podman
我们下一代的 Linux 容器工具:Podman
|
存储 Linux 应用服务中间件
Docker、Podman 容器“扫盲“ 学习笔记
你拥有青春的时候,就要感受它,不要虚掷你的黄金时代,不要去倾听枯燥乏味的东西,不要设法挽留无望的失败,不要把你的生命献给无知,平庸和低俗。 ------王尔德
2184 0
Docker、Podman 容器“扫盲“ 学习笔记
|
8天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
132 77