Podman基础

Podman是一个无需守护进程即可运行的开源容器管理工具,与Docker类似但更安全。Podman无需root权限,直接调用OCI runtime,简化了容器运行时的架构。Podman的命令与Docker高度兼容,使得在容器的创建、启动、管理和镜像操作上与Docker保持一致,适合系统构建者和普通用户使用。此外,Podman支持用户在没有root权限的情况下运行,并提供了安装配置、镜像加速以及容器和镜像的管理命令。
摘要由CSDN通过智能技术生成

什么是Podman?

Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用。Podman 提供与 Docker 非常相似的功能。正如前面提到的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。

Podman 可以管理和运行任何符合 OCI(Open Container Initiative)规范的容器和容器镜像。Podman 提供了一个与 Docker 兼容的命令行前端来管理 Docker 镜像。

Podman 官网地址:Podman

Podman和Docker的主要区别是什么?

  • dockers在实现CRI的时候,它需要一个守护进程,其次需要以root运行,因此这也带来了安全隐患。

  • podman不需要守护程序,也不需要root用户运行,从逻辑架构上,比docker更加合理。

  • 在docker的运行体系中,需要多个daemon才能调用到OCI的实现RunC。

  • 在容器管理的链路中,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的使用与docker有什么区别?

podman的定位也是与docker兼容,因此在使用上面尽量靠近docker。在使用方面,可以分成两个方面来说,一是系统构建者的角度,二是使用者的角度。

在系统构建者方面,用podman的默认软件,与docker的区别不大,只是在进程模型、进程关系方面有所区别。如果习惯了docker几个关联进程的调试方法,在podman中则需要适应。可以通过pstree命令查看进程的树状结构。总体来看,podman比docker要简单。由于podman比docker少了一层daemon,因此重启的机制也就不同了。

在使用者方面,podman与docker的命令基本兼容,都包括容器运行时(run/start/kill/ps/inspect),本地镜像(images/rmi/build)、镜像仓库(login/pull/push)等几个方面。因此podman的命令行工具与docker类似,比如构建镜像、启停容器等。甚至可以通过alias

docker=podman可以进行替换。因此,即便使用了podman,仍然可以使用http://docker.io作为镜像仓库,这也是兼容性最关键的部分。

Podman常用命令

容器

podman run 创建并启动容器 
podman start 启动容器 
podman ps 查看容器 
podman stop 终止容器 
podman restart 重启容器 
podman attach 进入容器 
podman exec 进入容器 
podman export 导出容器 
podman import 导入容器快照 
podman rm 删除容器 
podman logs 查看日志

 镜像

podman search 检索镜像 
podman 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 暴露端口

Podman的使用

Podman的安装

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-AppStream.repo   CentOS-Debuginfo.repo  CentOS-HA.repo          CentOS-Vault.repo
CentOS-Base.repo        CentOS-Devel.repo      CentOS-Media.repo
CentOS-centosplus.repo  CentOS-Extras.repo     CentOS-PowerTools.repo
CentOS-CR.repo          CentOS-fasttrack.repo  CentOS-Sources.repo
[root@localhost yum.repos.d]# rm -rf *
[root@localhost yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2495  100  2495    0     0  16201      0 --:--:-- --:--:-- --:--:-- 16201
[root@localhost yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

[root@localhost m.repos.d]# yum -y install podman
Complete!

[root@localhost yum.repos.d]# podman version
Version:      3.3.1
API Version:  3.3.1
Go Version:   go1.16.7
Built:        Wed Nov 10 05:23:56 2021
OS/Arch:      linux/amd64

配置加速器

这里使用的是阿里云加速器,获取方法见Docker基础用法

[root@localhost yum.repos.d]# cd
[root@localhost ~]# cd /etc/containers/
[root@localhost containers]# ls
certs.d  oci  policy.json  registries.conf  registries.conf.d  registries.d  storage.conf
[root@localhost containers]# mv registries.conf registries.conf
registries.conf    registries.conf.d/
[root@localhost containers]# mv registries.conf registries.conf.backups 新建一个空的registries.conf文件,并进行配置

[root@localhost containers]# vim registries.conf

unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = ""
location= "s7377xsd.mirror.aliyuncs.com"

Podman常用命令

podman pull #获取镜像

[root@localhost ~]# podman pull busybox
Resolved "busybox" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull docker.io/library/busybox:latest...
Getting image source signatures
Copying blob 50783e0dfb64 done
Copying config 7a80323521 done
Writing manifest to image destination
Storing signatures
7a80323521ccd4c2b4b423fa6e38e5cea156600f40cd855e464cc52a321a24dd

podman images #列出镜像

[root@localhost ~]# podman images
REPOSITORY                 TAG         IMAGE ID      CREATED      SIZE
docker.io/library/busybox  latest      7a80323521cc  2 weeks ago  1.47 MB

podman inspect 获取镜像的详细信息

[root@localhost ~]# podman inspect busybox
[
    {
        "Id": "7a80323521ccd4c2b4b423fa6e38e5cea156600f40cd855e464cc52a321a24dd",
        "Digest": "sha256:ef320ff10026a50cf5f0213d35537ce0041ac1d96e9b7800bafd8bc9eff6c693",
        "RepoTags": [
            "docker.io/library/busybox:latest"
        ],
        "RepoDig
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值