文章目录

  • Podman的部署和应用
  • Podman是什么
  • Podman的部署
  • Podma的应用


Podman的部署和应用

Podman是什么

Podman 是一个无守护程序、开源的 Linux 原生工具,旨在使用开放容器计划 (OCI) 容器和容器映像轻松查找、运行、构建、共享和部署应用程序。Podman 提供了一个命令行界面 (CLI),任何使用过 Docker 容器引擎的人都熟悉。大多数用户可以简单地将Docker别名为Podman(别名docker=podman),而不会出现任何问题。与其他常见的容器引擎(Docker,CRI-O,containerd)类似,Podman依靠符合OCI的容器运行时(runc,crun,runv等)与操作系统接口并创建正在运行的容器。这使得Podman创建的正在运行的容器与任何其他常见容器引擎创建的容器几乎没有区别。

Podman 控制下的容器可以由 root 用户或非特权用户运行。Podman 使用 libpod 库管理整个容器生态系统,其中包括 Pod、容器、容器映像和容器卷。Podman 专门研究所有帮助您维护和修改 OCI 容器映像(如拉取和标记)的命令和函数。它允许您在生产环境中创建、运行和维护这些容器和容器映像。

Podman的部署

[root@192 ~]# yum -y install podman-docker
[root@master ~]# vim /etc/containers/registries.conf
[[registry]]
prefix = "docker.io"
location = "docker.mirrors.ustc.edu.cn"

Podma的应用

命令

注释

attach

将本地标准输入、输出和错误流附加到运行的容器

build

从Dockerfile构建映像

commit

根据容器的更改创建一个新映像

cp

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

create

创建一个新容器

diff

检查容器文件系统中对文件或目录的更改

events

从服务器获取实时事件

exec

在运行容器中运行命令

export

将容器的文件系统导出为tar存档文件

history

显示映像的历史

images

映像列表

import

从tarball中导入内容以创建文件系统映像

info

显示整个系统的信息

inspect

返回Docker对象的低级信息

kill

杀死一个或多个运行中的容器

load

从tar存档或STDIN加载一个映像

login

登录Docker注册表

logout

从Docker注册表注销

logs

获取容器的日志

pause

暂停一个或多个容器中的所有进程

port

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

ps

列表容器

pull

从注册表中拉出映像或存储库

push

rename

重命名一个容器

restart

重新启动一个或多个容器

rm

移除一个或多个容器

rmi

删除一个或多个映像

run

在新容器中运行命令

save

将一个或多个映像保存到tar归档文件中(默认流到STDOUT)

search

在Docker Hub中搜索映像

start

启动一个或多个停止的容器

stats

显示容器资源使用统计信息的实时流

stop

停止一个或多个运行中的容器

tag

创建一个引用SOURCE_IMAGE的标记TARGET_IMAGE

top

显示容器的运行进程

unpause

取消暂停一个或多个容器中的所有进程

update

更新一个或多个容器的配置

version

显示Docker版本信息

wait

阻塞,直到一个或多个容器停止,然后打印它们的退出代码

//拉取镜像
[root@localhost ~]# podman pull busybox
[root@localhost ~]# podman images
REPOSITORY                 TAG         IMAGE ID      CREATED      SIZE
docker.io/library/busybox  latest     3a6u523521rc  2 weeks ago  1.47 MB

//运行容器
[root@localhost ~]# podman run -d --name httpd docker.io/library/httpd

//列出运行的容器
[root@localhost ~]# podman ps
CONTAINER ID  IMAGE                           COMMAND           CREATED        STATUS            PORTS       NAMES
79226945946c  docker.io/library/httpd:latest  httpd-foreground  3 minutes ago  Up 3 minutes ago              httpd

//查看运行中容器的日志
[root@localhost ~]# podman logs httpd

//查看运行容器中的进程资源使用情况,可以使用top观察容器中的 nginx pid
[root@localhost ~]# podman top httpd
USER        PID         PPID        %CPU        ELAPSED          TTY         TIME        COMMAND
root        1           0           0.000       4m40.540775446s  ?           0s          httpd -DFOREGROUND 
www-data    7           1           0.000       4m40.540998289s  ?           0s          httpd -DFOREGROUND 
www-data    8           1           0.000       4m40.541251262s  ?           0s          httpd -DFOREGROUND 
www-data    9           1           0.000       4m40.54134508s   ?           0s          httpd -DFOREGROUND 

//停止运行中的容器
[root@localhost ~]# podman ps
CONTAINER ID  IMAGE                           COMMAND           CREATED        STATUS            PORTS       NAMES
79226945946c  docker.io/library/httpd:latest  httpd-foreground  5 minutes ago  Up 5 minutes ago              httpd
[root@localhost ~]# podman stop httpd
httpd
[root@localhost ~]# podman ps
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

//删除容器
[root@localhost ~]# podman ps -a
CONTAINER ID  IMAGE                           COMMAND           CREATED        STATUS                     PORTS       NAMES
79226945946c  docker.io/library/httpd:latest  httpd-foreground  5 minutes ago  Exited (0) 42 seconds ago              httpd
[root@localhost ~]# podman rm httpd
99366946946ca23dda7b90dc2d25bc3d164770875e32c76834955a82c0f08490
[root@localhost ~]# podman ps -a
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

//容器与主机之间的数据拷贝
[root@localhost ~]# mkdir cl
[root@localhost ~]# podman  cp cl/ 77dd9dae5r44:/
[root@localhost ~]# podman attach cl
/ # ls
bin   dev   etc   home  proc  root  run   sys   tmp   usr   var   cl
[root@localhost ~]# rm -rf cl/
[root@localhost ~]# podman cp  77dd9dae5r44:/cl /
[root@localhost ~]# ls /
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  cl

//进入正在运行的容器
[root@localhost ~]# podman ps
CONTAINER ID  IMAGE                             COMMAND     CREATED      STATUS          PORTS       NAMES
77dd9dae5r44  docker.io/library/busybox:latest  sh          2 hours ago  Up 2 hours ago              cl
[root@localhost ~]# podman attach cl
/ #

//检查容器文件系统中对文件或目录的更改
[root@localhost ~]# podman diff f2a976f932ec
C /usr
C /usr/local
C /usr/local/bin
A /usr/local/bin/httpd-foreground

//在正在运行的容器中运行进程
[root@localhost ~]# podman exec -it f2a976f932ec /bin/sh
/ # ls
anaconda-ks.cfg  etc              root             tmp
bin              home             run              usr
dev              proc             sys              var
/ # exit

//显示指定镜像的历史记录
[root@localhost ~]# podman history httpd
ID            CREATED       CREATED BY                                     SIZE              COMMENT
r203f342c57b  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         

//列出本地存储中的镜像
[root@mr ~]# podman images
REPOSITORY                 TAG         IMAGE ID      CREATED        SIZE
docker.io/library/busybox  latest      3a6u523521rc  2 weeks ago    1.47 MB
docker.io/library/httpd    latest      79226945946c  7 months ago   148 MB