podman基础

发布于:2023-01-18 ⋅ 阅读:(416) ⋅ 点赞:(0)

podman基础

1.什么是Podman?

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

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

Podman 官网地址:https://podman.io/

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

  1. dockers在实现CRI的时候,它需要一个守护进程,其次需要以root运行,因此这也带来了安全隐患。
  2. podman不需要守护程序,也不需要root用户运行,从逻辑架构上,比docker更加合理。
  3. 在docker的运行体系中,需要多个daemon才能调用到OCI的实现RunC。
  4. 在容器管理的链路中,Docker Engine的实现就是dockerd
  5. daemon,它在linux中需要以root运行,dockerd调用containerd,6. containerd调用containerd-shim,然后才能调用runC。顾名思义shim起的作用也就是“垫片”,避免父进程退出影响容器的运训
  6. podman直接调用OCI,runtime(runC),通过common作为容器进程的管理工具,但不需要dockerd这种以root身份运行的守护进程。
  7. 在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作为镜像仓库,这也是兼容性最关键的部分。

centos8 安装部署podman

1. 下载podman

[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  13708      0 --:--:-- --:--:-- --:--:-- 13633
[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 yum.repos.d]# cd
[root@localhost ~]# yum -y install podman

2.配置加速器

[root@localhost ~]# vim /etc/containers/registries.conf
unqualified-search-registries = ["docker.io"] //这里只需要docker.io
[[registry]]
location= "k9su2aqs.mirror.aliyuncs.com" //前面的httpd://删掉

3.常用基础命令

podman安装完之后不需要启动命令就可以直接使用

容器

podman run 创建并启动容器

[root@localhost ~]# podman run -dit --name bbb docker.io/library/busybox
33319a0de2f5216183241e06c691e6c2512e33f77b3f145dc5d3a3bcfa90b889

podman ps 查看容器

[root@localhost ~]# podman ps
CONTAINER ID  IMAGE                             COMMAND     CREATED        STATUS            PORTS       NAMES
33319a0de2f5  docker.io/library/busybox:latest  sh          3 seconds ago  Up 3 seconds ago              bbb   

podman restart 重启容器

[root@localhost ~]# podman restart 87
870a4ff5ba62cb01ad5f9bffd7f3f57e0f60c52459a5ccd092040a50145952f4

podman export 导出容器

[root@localhost ~]# podman export -o c.tar c1 
[root@localhost ~]# ls
anaconda-ks.cfg  c.tar  passwd

podman import 导入容器快照

[root@localhost ~]# podman import c.tar 
Getting image source signatures
Copying blob afd04d4c44ac [----------------------------------] 0.0b / 0.0b
Copying config 4795b60330 done  
Writing manifest to image destination
Storing signatures
sha256:4795b603305e8039e21fa6a9c8d036e5581d333c021d8e8663e73cef4d0afca6

podman rm 删除容器

[root@localhost ~]# podman rm -f bbb
55e7b50f5f0a1dab74f04b8b85d198cfcf62054c97cfee0b55c68b5e909cbc91

podman logs 查看日志

[root@localhost ~]# podman logs bbb
/ # ls
bin   dev   etc   home  proc  root  run   sys   tmp   usr   var
/ # wxit
sh: wxit: not found
/ # exit

镜像

podman search 检索镜像

[root@localhost ~]# podman search busybox
INDEX       NAME                                         DESCRIPTION                                      STARS       OFFICIAL    AUTOMATED
docker.io   docker.io/library/busybox                    Busybox base image.                              2711        [OK]        
docker.io   docker.io/rancher/busybox                                                                     0                       
docker.io   docker.io/ibmcom/busybox                                                                      0              

podman pull 获取镜像

[root@localhost ~]# podman run -dit --name b1 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
870a4ff5ba62cb01ad5f9bffd7f3f57e0f60c52459a5ccd092040a50145952f4

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 rmi 删除镜像

[root@localhost ~]#  podman rmi busybox
Untagged: docker.io/library/busybox:latest
Deleted: 7a80323521ccd4c2b4b423fa6e38e5cea156600f40cd855e464cc52a321a24dd

podman save 导出镜像

[root@localhost ~]# podman save > c1.tar centos
[root@localhost ~]# ls
anaconda-ks.cfg  c1.tar  c.tar  passwd

podman load 导入镜像

[root@localhost ~]# podman load < c1.tar 
Getting image source signatures
Copying blob 2653d992f4ef [----------------------------------] 0.0b / 0.0b
Copying config 300e315adb done  
Writing manifest to image destination
Storing signatures
Loaded image(s): quay.io/centos/centos:latest

拉取推送镜像

[root@localhost ~]# podman tag quay.io/centos/centos:latest  quay.io/renweiwei/test:centos

[root@localhost ~]# podman login
Username: renweiwei
Password: 
Login Succeeded!
[root@localhost ~]# podman images
REPOSITORY                 TAG         IMAGE ID      CREATED         SIZE
<none>                     <none>      4795b603305e  52 minutes ago  217 MB
docker.io/library/busybox  latest      7a80323521cc  2 weeks ago     1.47 MB
quay.io/renweiwei/test     centos      300e315adb2f  20 months ago   217 MB


[root@localhost ~]# podman push docker.io/library/busybox:latest
Getting image source signatures
Copying blob 084326605ab6 [--------------------------------------] 8.0b / 1.4MiB
Error: writing blob: initiating layer upload to /v2/library/busybox/blobs/uploads/ in registry-1.docker.io: errors:
denied: requested access to the resource is denied
unauthorized: authentication required

[root@localhost ~]# podman pull docker.io/library/busybox:latest
Trying to pull docker.io/library/busybox:latest...
Getting image source signatures
Copying blob 50783e0dfb64 [--------------------------------------] 0.0b / 0.0b
Copying config 7a80323521 done  
Writing manifest to image destination
Storing signatures
7a80323521ccd4c2b4b423fa6e38e5cea156600f40cd855e464cc52a321a24dd

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到