podman

podman

podman简述

Podman 是一个开源项目,可在大多数 Linux 平台上使用,并位于GitHub 上。Podman 是一个无守护进程的容器引擎,用于在 Linux 系统上开发、管理和运行 Open Container Initiative (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 服务进行通信。Mac 客户端。

podman官网

podman安装

Podman 在 CentOS 7 的默认 Extras 存储库和 CentOS 8 和 Stream 的 AppStream 存储库中可用;可直接进行yum安装。

[root@weijunhao ~]# dnf -y install podman --allowerasing 
......

Installed:
  conmon-2:2.0.29-1.module_el8.5.0+890+6b136101.x86_64                
  containernetworking-plugins-1.0.0-1.module_el8.5.0+890+6b136101.x86_64
  containers-common-2:1-2.module_el8.5.0+890+6b136101.noarch          
  criu-3.15-3.module_el8.5.0+890+6b136101.x86_64                      
  libnet-1.1.6-15.el8.x86_64                                          
  podman-3.3.1-9.module_el8.5.0+988+b1f0b741.x86_64                   
  podman-catatonit-3.3.1-9.module_el8.5.0+988+b1f0b741.x86_64         
  protobuf-c-1.3.0-6.el8.x86_64                                       
  runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64                     
Removed:
  containerd.io-1.6.7-3.1.el8.x86_64                                  
  docker-ce-3:20.10.17-3.el8.x86_64                                   
  docker-ce-rootless-extras-20.10.17-3.el8.x86_64                     

Complete!

//修改配置文件
[root@weijunhao ~]# cd /etc/containers/
[root@weijunhao containers]# ls
certs.d  oci  policy.json  registries.conf  registries.conf.d  registries.d  storage.conf
[root@weijunhaot containers]# vim registries.conf

unqualified-search-registries = ["docker.io"]			//设置拉取镜像取docker官网拉取
[[registry]]
prefix = "docker.io"
location = "bmhtctzo.mirror.aliyuncs.com"		//配置加速器

podman用法

查看版本

[root@weijunhao ~]# podman -v
podman version 3.3.1

[root@weijunhao ~]# 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

//查看详细信息

[root@weijunhao ~]# podman info
......
version:
  APIVersion: 3.3.1
  Built: 1636493036
  BuiltTime: Wed Nov 10 05:23:56 2021
  GitCommit: ""
  GoVersion: go1.16.7
  OsArch: linux/amd64
  Version: 3.3.1

登入和登出

[root@weijunhao ~]# podman login docker.io 
Username: wjh0077
Password: 
Login Succeeded!
[root@weijunhao ~]# podman logout
Removed login credentials for docker.io 

image镜像管理子命令

build

基于dockerfile创建镜像

diff

检查映像文件系统的更改

示例:
[root@weijunhao containers]# cd
[root@weijunhao ~]# podman diff httpd
C /usr
C /usr/local
C /usr/local/bin
A /usr/local/bin/httpd-foreground

history

显示指定镜像的历史记录

[root@weijunhao ~]# podman image history httpd
ID            CREATED       CREATED BY                                     SIZE              COMMENT
dabbfbe0c57b  7 months ago  /bin/sh -c #(nop)  CMD ["httpd-foreground"]    0 B               
<missing>     7 months ago  /bin/sh -c #(nop)  EXPOSE 80                   0 B               
<missing>     7 months ago  /bin/sh -c #(nop) COPY file:c432ff61c4993e...  3.58 kB           
<missing>     7 months ago  /bin/sh -c #(nop)  STOPSIGNAL SIGWINCH         0 B       ......

inspect

显示镜像的配置

[root@weijunhao ~]# podman image inspect httpd
......
                "created": "2021-12-21T01:36:12.533128291Z",
                "created_by": "/bin/sh -c #(nop)  EXPOSE 80",
                "empty_layer": true
            },
            {
                "created": "2021-12-21T01:36:12.729599368Z",
                "created_by": "/bin/sh -c #(nop)  CMD [\"httpd-foreground\"]",
                "empty_layer": true
            }
        ],
        "NamesHistory": [
            "docker.io/library/httpd:latest"
        ]
    }
]
[ro

list

列出本地存储中镜像

[root@weijunhao ~]# podman image list
REPOSITORY                 TAG         IMAGE ID      CREATED       SIZE
docker.io/library/busybox  latest      beae173ccac6  7 months ago  1.46 MB
docker.io/library/httpd    latest      dabbfbe0c57b  7 months ago  148 MB

rm

删除镜像

[root@weijunhao ~]# podman image rm httpd
Untagged: docker.io/library/httpd:latest
Deleted: dabbfbe0c57b6e5cd4bc089818d3f664acfad496dc741c9a501e72d15e803b34
[root@weijunhao ~]# podman image list 
REPOSITORY                 TAG         IMAGE ID      CREATED       SIZE
docker.io/library/busybox  latest      beae173ccac6  7 months ago  1.46 MB

save

将镜像保存到本地

[root@weijunhao ~]# podman image save busybox > busybox.tar
[root@weijunhao ~]# ls
anaconda-ks.cfg  busybox.tar  http.tar  man.test.config

load

从tar存档加载镜像

[root@weijunhao ~]# podman image load < busybox.tar 
Getting image source signatures
Copying blob 01fd6df81c8e skipped: already exists  
Copying config beae173cca done  
Writing manifest to image destination
Storing signatures
Loaded image(s): docker.io/library/busybox:latest
[root@weijunhao ~]# podman image list 
REPOSITORY                 TAG         IMAGE ID      CREATED       SIZE
docker.io/library/busybox  latest      beae173ccac6  7 months ago  1.46 MB

prune

删除未使用的镜像

[root@weijunhao ~]# podman image prune 
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y

search

搜索镜像

[root@weijunhao ~]# podman image search busybox

INDEX       NAME                                      DESCRIPTION                                      STARS       OFFICIAL    AUTOMATED
docker.io   docker.io/library/busybox                 Busybox base image.                              2712        [OK]        
docker.io   docker.io/rancher/busybox                                                                  0                       
docker.io   docker.io/ibmcom/busybox                                                                   0                       
docker.io   docker.io/openebs/busybox-client                                                           0                       
docker.io   docker.io/antrea/busybox                                                                   0                       
docker.io   docker.io/ibmcom/busybox-amd64                                                             0                       
docker.io   docker.io/ibmcom/busybox-ppc64le                                                           0                       
docker.io   docker.io/yauritux/busybox-curl           Busybox with CURL                                16                      ......

pull

拉取镜像

[root@weijunhao ~]# podman image pull busybox
Trying to pull docker.io/library/busybox:latest...
Getting image source signatures
Copying blob 5cc84ad355aa [------------------------------] 0.0b / 0.0b
Copying config beae173cca done  
Writing manifest to image destination
Storing signatures
beae173ccac6ad749f76713cf4440fe3d21d1043fe616dfbe30775815d1d0f6a

tag

对镜像修改标签

[root@weijunhao ~]# podman tag busybox beae173ccac6/busybox:v0.1
[root@weijunhao ~]# podman image list
REPOSITORY                      TAG         IMAGE ID      CREATED       SIZE
docker.io/library/busybox       latest      beae173ccac6  7 months ago  1.46 MB
localhost/beae173ccac6/busybox  v0.1        beae173ccac6  7 months ago  1.46 MB

push

上传镜像

示例
先打标签,改名
命名规则:自己的账户名/镜像名:版本号(标签)

tree

以树格式打印镜像的图层层次结构

[root@weijunhao ~]# podman image tree busybox
Image ID: beae173ccac6
Tags:     [docker.io/library/busybox:latest localhost/beae173ccac6/busybox:v0.1]
Size:     1.464MB
Image Layers
└── ID: 01fd6df81c8e Size: 1.459MB Top Layer of: [docker.io/library/busybox:latest localhost/beae173ccac6/busybox:v0.1]

container容器管理子命令

create

创建一个或多个容器

[root@weijunhao ~]# podman container create httpd
bec2016f608f810fa171fd9d29ffdda8ea4c3de738153b9fb451b146008708fb
[root@weijunhao ~]# podman container create --name alg httpd
e0caf74ef8cac36b8e7be1c4a1be593aefcb223ce0160af2b203938ac4d8dec8

start

启动一个或多个容器

[root@weijunhao ~]# podman container start e0caf74ef8ca alg
e0caf74ef8ca

ps或者list

容器列表

示例
[root@weijunhao ~]# podman container list 
CONTAINER ID  IMAGE                           COMMAND           CREATED             STATUS             PORTS       NAMES
9f18617f6997  docker.io/library/httpd:latest  httpd-foreground  About a minute ago  Up 34 seconds ago              strange_dijkstra
c4eeac336637  docker.io/library/httpd:latest  httpd-foreground  About a minute ago  Up 34 seconds ago              alg
或者
[root@weijunhao ~]# podman container ps 
CONTAINER ID  IMAGE                           COMMAND           CREATED             STATUS             PORTS       NAMES
9f18617f6997  docker.io/library/httpd:latest  httpd-foreground  About a minute ago  Up 45 seconds ago              strange_dijkstra
c4eeac336637  docker.io/library/httpd:latest  httpd-foreground  About a minute ago  Up 45 seconds ago              alg
 
用法大致相同
参数
-a 或 --all    //列出所有容器,包括未运行
-s  或 --size  //查看本地机上所有运行实例的大小
-q  或 --quiet //查看容器id

rename

重命名现有容器

示例
[root@weijunhao ~]# podman container rename alg web
[root@weijunhao ~]# podman container list
CONTAINER ID  IMAGE                           COMMAND           CREATED        STATUS            PORTS       NAMES
e0caf74ef8ca  docker.io/library/httpd:latest  httpd-foreground  6 minutes ago  Up 4 minutes ago              web

stop

停止一个或多个容器

[root@weijunhao ~]# podman stop e0caf74ef8ca web
web
e0caf74ef8ca
[root@weijunhao ~]# podman ps
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

restart

重新启动一个或多个容器

[root@weijunhao ~]# podman container restart web
e0caf74ef8cac36b8e7be1c4a1be593aefcb223ce0160af2b203938ac4d8dec8
[root@weijunhao ~]# podman ps
CONTAINER ID  IMAGE                           COMMAND           CREATED        STATUS            PORTS       NAMES
e0caf74ef8ca  docker.io/library/httpd:latest  httpd-foreground  9 minutes ago  Up 9 seconds ago              web

run

在新容器中运行命令(可以理解为创建并启动容器)

[root@weijunhao ~]# podman container run -itd --name wjh busybox
c69516b97ffc3ff786c5cda6edc2fff8db21c0f1b99c03bfa0a1078555e88fdc
[root@weijunhao ~]# podman container ps
CONTAINER ID  IMAGE                             COMMAND           CREATED         STATUS             PORTS       NAMES
e0caf74ef8ca  docker.io/library/httpd:latest    httpd-foreground  12 minutes ago  Up 2 minutes ago               web
c69516b97ffc  docker.io/library/busybox:latest  sh                13 seconds ago  Up 13 seconds ago              wjh

参数
--name 容器名 //指定容器名
--label 标记名 //加标记方便查找
-it   //让容器的输入保持打开状态,并分配终端
-c    //不进行登录执行命令
-d    //将容器放入后台进行执行
-v     //可以创建多个数据卷
    也可挂载到宿主机的目录,如果本地没有目录,则自动生成一个目录
    挂载方法    //宿主机目录:docker数据卷
    [root@docker ~]# docker run -d -v /var/www/:/www nginx  //在本地创建一个/var/www目录 ,在容器里面创建一个/www目录;将本地目录映射到容器目录
 
-p     //映射端口   宿主机端:容器端口
-P      //发布所有公开的端口(随机映射端口号)
--volumes-from  //容器和容器之间建立联系
    将容器的所有目录共享给新创建的容器
    [root@docker ~]# docker run  --volumes-from 想要挂载的容器 --name 指定新容器名 镜像
    [root@docker ~]# docker run -it --volumes-from wxh --name wwww nginx /bin/bash
----restart always //永久开启容器,服务重启后容器也会启动,不会关闭
--rm //一次性容器,退出后直接删除

attach

连接到运行的容器

[root@weijunhao ~]# podman container attach wjh
/ # ls
bin   dev   etc   home  proc  root  run   sys   tmp   usr   var
/ # 

exec

在正在运行的容器中运行进程

示例
[root@weijunhao ~]# podman container exec -it hh /bin/sh
/ # ls
bin   dev   etc   home  proc  root  run   sys   tmp   usr   var

cp

在容器和本地文件之间复制文件/文件夹

示例
[root@weijunhao ~]# podman container cp a hh:/
[root@weijunhao ~]# podman container exec -it hh /bin/sh
/ # ls
a     bin   dev   etc   home  proc  root  run   sys   tmp   usr   var

kill

使用特定信号终止一个或多个正在运行的容器
[root@weijunhao ~]# podman kill web
web
[root@weijunhao ~]# podman ps
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

port

列出端口映射或容器的特定映射

[root@weijunhao ~]# podman container run -d --name kkk -p 888:80 httpddd30bf0a6a97efb878d45f7f97037bada96c5903320700ae0618fe0981aa7f1b
[root@weijunhao ~]# podman container port kkk
80/tcp -> 0.0.0.0:888

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值