podman
文章目录
什么是podman?
Podman是一个开源项目,可以在大多数Linux平台上使用,可将代码放在[GitHub]上。Podman 是一个无守护容器引擎,用于在 Linux 系统上开发、管理和运行开放容器计划 (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服务进行通信。
podman(Pod Manager)是一个由RedHat公司推出的容器管理工具,它的定位就是docker的替代品,在使用上与docker的体验类似。 podman源于CRI-O项目,可以直接访问OCI的实现(如runC),流程比docker要短。 二者主要的区别在于,podman是一个开源的产品;而docker已经是商业化的产品。 podman的开源代码,由RedHat的OpenShift项目维护。 podman.io上面的文档还不算很健全,作为普通开发者,将其当成docker去用,难度也不算很大。
概述和范围
从高层次上讲,libpod 和 Podman 的范围如下:
- 支持多种镜像格式,包括 OCI 和 Docker 镜像格式。
- 支持多种安全下载图像的方法,包括信任和图像验证。
- 容器映像管理(管理映像层、覆盖文件系统等)。
- 全面管理容器生命周期。
- 支持 Pod 一起管理容器组。
- 容器和 Pod 的资源隔离。
策略
- 有关 podman pod 命令的进一步工作。
- 无根容器的进一步改进。
- 支持无根 Podman 与 NFS Homedirs。
- 支持原生叠加层上的无根 Podman。
- 增强了图像的加速拉取功能。
- Podman 程序,用于设置用于在 Mac 和 Linux 上运行 nativley 的 VM。
podman -remote run
podman的安装
podman 在 CentOS 7 的默认 Extras 存储库中可用,在 CentOS 8 和 Stream 的 AppStream 存储库中可用。
[root@localhost ~]# dnf -y install podman
[root@localhost ~]# rpm -qa | grep podman
podman-3.4.1-3.module_el8.6.0+954+963caf36.x86_64
podman-catatonit-3.4.1-3.module_el8.6.0+954+963caf36.x86_64
# 我们可以给podman定义一个别名叫docker
[root@localhost ~]# alias docker=podman
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@localhost ~]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
查看帮助
[root@localhost ~]# podman --help
Manage pods, containers and images
Usage:
podman [options] [command]
Available Commands:
attach Attach to a running container
auto-update Auto update containers according to their auto-update policy
build Build an image using instructions from Containerfiles
......
查看帮助文档
[root@localhost ~]# man podman
......
# 查看子命令,示例(example),比如查看 podman run
[root@localhost ~]# man podman-run
.......
poman 的常用命令:
Podman可以使用一些简单的关键字在远程官方仓库上搜索镜像
podman search <search_term>
[root@localhost ~]# podman search nginx
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
fedoraproject.org registry.fedoraproject.org/f29/nginx 0
redhat.com registry.access.redhat.com/ubi8/nginx-118 Platform for running nginx 1.18 or building ... 0
......
centos.org registry.centos.org/centos/nginx 0
.......
docker.io docker.io/library/nginx Official build of Nginx. 15928 [OK]
......
# 搜索的镜像有多个拉取地址,所以拉取的时候要指定具体的地址
还可以使用过滤器增强搜索:
podman search httpd --filter=is-official
[root@localhost ~]# podman search nginx --filter=is-official (--filter=is-official 过滤官方镜像)
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/library/nginx Official build of Nginx. 15928 [OK]
下载(拉取)图像也很容易
[root@localhost ~]# podman pull docker.io/library/nginx
......
# 注意:Podman在不同的注册管理机构中搜索。因此,建议使用完整的映像名称(docker.io/library/httpd而不是httpd)来确保使用正确的映像。
拉取一些图像后,您可以列出计算机上存在的所有图像
[root@localhost ~]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/nginx latest f652ca386ed1 11 days ago 146 MB
运行容器
示例容器将运行一个非常基本的 nginx 服务器,该服务器仅为其索引页提供服务
[root@localhost ~]# podman run -d -p 80:80 docker.io/library/nginx:latest
81462774ef3a27079293143a15b361a9672100e44868ac