浅谈容器技术之Podman

1.Podman容器简介

Podman(Pod Manager)是一个由RedHat公司推出的容器管理工具,它的定位就是 Docker 的替代品,在使用上与Docker 的体验类似。Podman源于CRI-O项目,可以直接访问 OCI 的实现(如 runC),流程比 docker 要短。

Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用。Podman 提供与 Docker 非常相似的功能。它不需要在系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。Podman 可以管理和运行任何符合 OCI(Open Container Initiative)规范的容器和容器镜像。Podman 提供了一个与 Docker 兼容的命令行前端来管理 Docker 镜像。

浅谈容器技术之Podman_第1张图片

2.Podman与Docker的区别

在容器管理的链路中,Docker Engine的实现就是 dockerd daemon,它在 linux 中需要以 root 运行,dockerd 调用 containerd,containerd 调用 containerd-shim,然后才能调用 runc。顾名思义shim 起的作用也就是“垫片”,避免父进程退出影响容器的运训。

podman 直接调用 OCI runtime(runc),通过common 作为容器进程的管理工具,但不需要dockerd 这种以root 身份运行的守护进程。

在podman 体系中,有个称之为common 的守护进程,其运行路径通常是/usr/libexec/podman/conmon,它是各个容器进程的父进程,每个容器各有一个,common 的父则通常是 1 号进程。podman 中的 common 其实相当于docker体系中的 containerd-shim。

                浅谈容器技术之Podman_第2张图片

上图中所体现的是,podman不需要守护进程,而docker需要守护进程。Podman通过直接与Image Registry、Image和Container进行互动,而不是通过守护进程来解决以上问题。此外,Podman还允许用户在没有完全root 权限的情况下运行容器。 更为重要的是,它还提供了与Docker兼容的指令,使用户可以很轻易的从原本的Docker指令切换到Podman。

3.Podman容器常用命令

3.1容器相关命令

podman run     #创建并启动容器  
podman start    #启动容器  
podman ps      #查看容器  
podman stop     #终止容器  
podman restart   #重启容器  
podman attach    #进入容器  
podman exec     #进入容器  
podman export    #导出容器  
podman import    #导入容器快照  
podman rm      #删除容器  
podman logs     #查看日志
podman system migrate #为用户停止所有容器并终止暂停进程

3.2镜像相关命令

podman search       #检索镜像  
docke pull         #获取镜像  
podman images       #列出镜像  
podman image Is      #列出镜像  
podman rmi         #删除镜像  
podman image rm      #删除镜像  
podman save        #导出镜像  
podman load        #导入镜像  
podmanfile         #定制镜像(三个)  
podman build        #构建镜像  
podman run        #运行镜像  
podmanfile        #常用指令(四个)  
•    COPY           #复制文件  
•    ADD           #高级复制  
•    CMD           #容器启动命令  
•    ENV           #环境变量  
•    EXPOSE          #暴露端口

4.部署和使用Podman容器

4.1Podman的安装

4.1.1yum方式安装

//安装podman
yum -y install podman
//仓库配置
vim /etc/containers/registries.conf  
[registries.search] 
registries = ['registry.access.redhat.com', 'registry.redhat.io', 'docker.io'] unqualified-search-registries = ["registry.fedoraproject.org", "registry.access.redhat.com", "registry.centos.org", "docker.io"] 

4.1.2源码方式安装

git clone https://github.com/containers/podman/cd podman
make BUILDTAGS="selinux seccomp"
sudo make install PREFIX=/usr 

4.2Podman的使用

验证是否安装成功

 运行podman容器

podman run -d --name httpd docker.io/library/httpd
podman images

浅谈容器技术之Podman_第3张图片

 列出运行的容器

podman ps

 注意:如果在ps命令中添加-a,Podman 将显示所有容器。

检查正在运行的容器

您可以“检查”正在运行的容器的元数据和有关其自身的详细信息。我们甚至可以使用 inspect 子命令查看分配给容器的 IP 地址。由于容器以无根模式运行,因此未分配 IP 地址,并且该值将在检查的输出中列为“无”。

注意: -l 是最新容器的便利参数。您还可以使用容器的 ID 代替 -l。

podman inspect -l | grep IPAddress

 查看一个运行中容器的日志

podman logs --latest

 查看一个运行容器中的进程资源使用情况

podman top 

停止一个运行中的容器

podman stop --latest

 删除一个容器

podman rm --latest

你可能感兴趣的:(云原生,podman,运维,容器,linux)