Podman的部署和应用

Podman的部署和应用

Podman是什么?

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

Podman的部署

[root@master ~]# yum -y install podman-docker
//podman的加速器

[root@master ~]# vim /etc/containers/registries.conf

[[registry]]
prefix = "docker.io"
location="qr9cmeol.mirror.aliyuncs.com"

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阻塞,直到一个或多个容器停止,然后打印它们的退出代码

使用 Podman 非常的简单,Podman 的指令跟 Docker 大多数都是相同的。下面我们来看几个常用的例子:

//搜索镜像
[root@master ~]# podman search busybox

//拉取一个镜像
[root@master ~]# podman pull busybox
[root@master ~]# podman images
REPOSITORY                 TAG         IMAGE ID      CREATED      SIZE
docker.io/library/busybox  latest      7a80323521cc  2 weeks ago  1.47 MB

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

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

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

//查看一个运行容器中的进程资源使用情况,可以使用top观察容器中的 nginx pid
[root@master ~]# 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@master ~]# podman ps
CONTAINER ID  IMAGE                           COMMAND           CREATED        STATUS            PORTS       NAMES
99366946946c  docker.io/library/httpd:latest  httpd-foreground  5 minutes ago  Up 5 minutes ago              httpd
[root@master ~]# podman stop httpd
httpd
[root@master ~]# podman ps
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

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

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

//进入一个正在运行的容器
[root@master ~]# podman ps
CONTAINER ID  IMAGE                             COMMAND     CREATED      STATUS          PORTS       NAMES
87dd9dae3e54  docker.io/library/busybox:latest  sh          2 hours ago  Up 2 hours ago              yxt
[root@master ~]# podman attach yxt
/ #

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

//登入docker仓库
[root@master ~]# podman login docker.io
Username: yexiaotian
Password: 
Login Succeeded!

//修改标签
[root@master ~]# podman images
REPOSITORY                 TAG         IMAGE ID      CREATED      SIZE
docker.io/library/httpd    latest      f2a976f932ec  13 days ago  149 MB
docker.io/library/busybox  latest      7a80323521cc  2 weeks ago  1.47 MB
[root@master ~]# podman tag docker.io/library/busybox:latest quay.io/yxt
/busybox:v0.1
[root@master ~]# podman images
REPOSITORY                 TAG         IMAGE ID      CREATED      SIZE
docker.io/library/httpd    latest      f2a976f932ec  13 days ago  149 MB
docker.io/library/busybox  latest      7a80323521cc  2 weeks ago  1.47 MB
quay.io/yxt/busybox        v0.1        7a80323521cc  2 weeks ago  1.47 MB

//查看镜像的元数据
[root@master ~]# podman inspect f2a976f932ec
[
    {
        "Id": "f2a976f932ec6fe48978c1cdde2c8217a497b1f080c80e49049e02757302cf74",
        "Digest": "sha256:343452ec820a5d59eb3ab9aaa6201d193f91c3354f8c4f29705796d9353d4cc6",
        "RepoTags": [
            "docker.io/library/httpd:latest"
        ],
...
显示指定镜像的历史记录
[root@master ~]# podman history f2a976f932ec
ID            CREATED      CREATED BY                                     SIZE              COMMENT
f2a976f932ec  13 days ago  /bin/sh -c #(nop)  CMD ["httpd-foreground"]    0 B               
<missing>     13 days ago  /bin/sh -c #(nop)  EXPOSE 80                   0 B               
<missing>     13 days ago  /bin/sh -c #(nop) COPY file:c432ff61c4993e...  3.58 kB           
<missing>     13 days ago  /bin/sh -c #(nop)  STOPSIGNAL SIGWINCH         0 B               
...

//显示整个系统的信息
[root@master ~]# podman info
host:
  arch: amd64
  buildahVersion: 1.22.3
  cgroupControllers:
  - cpuset
  - cpu
  - cpuacct
  - blkio
  - memory
  - devices
  - freezer
  - net_cls
  - perf_event
  - net_prio
  - hugetlb
  - pids
  - rdma
  cgroupManager: systemd
...

Podman于Docker的区别

  • 单点故障问题,Docker Daemon一旦死亡,所有容器都将死亡
  • Docker Daemon拥有运行中的容器的所有子进程
  • 所有Docker操作都必须由具有跟root相同权限的用户执行
  • 构建容器时可能会导致安全漏洞
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值