Podman

podman与docker的区别

podman(Pod Manager)是一个由RedHat公司推出的容器管理工具,它的定位就是docker的替代品,在使用上与docker的体验类似。 podman源于CRI-O项目,可以直接访问OCI的实现(如runC),流程比docker要短。 二者主要的区别在于,podman是一个开源的产品;而docker已经是商业化的产品。 podman的开源代码,由RedHat的OpenShift项目维护。 podman.io上面的文档还不算很健全,作为普通开发者,将其当成docker去用,难度也不算很大。

安装

# redhat8安装
yum module enable -y container-tools:rhel8
yum module install -y container-tools:rhel8

[root@localhost ~]# yum -y install podman

[root@localhost ~]# rpm -qa | grep podman
podman-1.6.4-29.el7_9.x86_64

#定义别名
[root@localhost ~]# alias docker=podman
[root@localhost ~]# podman images
REPOSITORY   TAG   IMAGE ID   CREATED   SIZE
[root@localhost ~]# docker images
REPOSITORY   TAG   IMAGE ID   CREATED   SIZE

普通用户使用podman

在允许没有root特权的用户运行podman之前,管理员必须需要安装或构件podman并完成以下配置

在允许没有特殊权限的用户运行podman之前,管理员必须需要安装或构件podman并完成以下配置

cgroup V2Linux内核功能允许用户限制普通用户容器可以使用的资源,如果使用cgroup V2启用了运行Podman的Linux发行版,则可能需要更改默认的OCI运行时。某些较旧的版本runc不适用于cgroup V2,必须切换到备用OCI运行时crun。

[root@localhost ~]# cd  /etc/containers/
[root@localhost containers]# vim storage.conf 
[storage.options]
# Storage options to be passed to underlying storage drivers
mount_program = "/usr/bin/fuse-overlayfs"
···
additionalimagestores = [
mount_program="/sru/bin/fuse-overlayfs"
]

#安装crun包
[root@localhost ~]# yum -y install crun 

[root@localhost ~]# vim /usr/share/containers/containers.conf  #修改如下
448 runtime = "crun"
449 #runtime = "runc"

[root@localhost containers]# sysctl user.max_user_namespaces=15000  #RHEL7上需要做此操作,8不需要做
[root@localhost containers]# useradd tom  #创建用户之后会在此文件自动生成此内容
[root@localhost containers]# cat /etc/subuid
tom:100000:65536

// 启动非特权ping 
[root@localhost containers]# sysctl -w "net.ipv4.ping_group_range=0 200000" #大于100000这个就表示tom可以操作podman
net.ipv4.ping_group_range = 0 200000

// 用户配置文件
[root@localhost containers]# cat /usr/share/containers/containers.conf
[root@localhost containers]# cat /etc/containers/containers.conf
[root@localhost ~]# cat ~/.config/containers/containers.conf  #优先级最高

[root@localhost containers]# cat /run/user/0/containers/auth.json  #此文件里面写了docker账号的密码,以加密方式显示

[tom@localhost ~]$ podman images
ERRO[0000] XDG_RUNTIME_DIR directory "/run/user/0" is not owned by the current user

// 解决
[root@localhost ~]# chown -R tom.tom /run/user/0/
[tom@localhost ~]$ podman images 
REPOSITORY  TAG         IMAGE ID    CREATED     SIZE

常用命令

查看帮助

# 查看帮助文档
[root@localhost ~]# podman --help
manage pods and images

Usage:
  podman [flags]
  podman [command]
······

#查看帮助手册
[root@localhost ~]# man podman

查找镜像

[root@localhost ~]# podman search httpd
INDEX        NAME                                                                          DESCRIPTION                                       AUTOMATED
redhat.com   registry.access.redhat.com/rhscl/httpd-24-rhel7                               Apache HTTP 2.4 Server                            

// --filter=is-official		#查找官方版本
[root@localhost ~]# podman search httpd --filter=is-official
INDEX       NAME                      DESCRIPTION                      STARS   OFFICIAL   AUTOMATED
docker.io   docker.io/library/httpd   The Apache HTTP Server Project   3794    [OK]

下载镜像

#拉取镜像,建议使用完整镜像名称(docker.io/library/httpd而不是httpd)来确保使用正确的镜像
[root@localhost ~]# podman pull docker.io/library/busybox
Trying to pull docker.io/library/busybox...
Getting image source signatures
Copying blob 3cb635b06aa2 done  
Copying config ffe9d497c3 done  
Writing manifest to image destination
Storing signatures
ffe9d497c32414b1c5cdad8178a85602ee72453082da2463f1dede592ac7d5af

显示所有镜像

[root@localhost ~]# podman images
REPOSITORY                  TAG      IMAGE ID       CREATED      SIZE
docker.io/library/busybox   latest   ffe9d497c324   6 days ago   1.46 MB

运行容器

注:我们使用端口转发来访问HTTP服务器。要成功运行,至少需要 slirp4netns v0.3.0。

[root@localhost ~]# podman run -d docker.io/library/busybox
8cee5f783249edcafe0844a1aea745e4ed963a5968f7c2e3fe72fe6f7d18774f

列出容器

[root@localhost ~]# docker  ps 
CONTAINER ID  IMAGE                             COMMAND  CREATED         STATUS             PORTS  NAMES
13aeb44ac619  docker.io/library/busybox:latest  sh       47 seconds ago  Up 46 seconds ago         admiring_torvalds

# 当加上-a选项会列出所有容器

显示容器信息

-l:查看最新信息(最新的信息以最新的时间来定义)
您可以"检查"正在运行的容器,以查找有关其自身的元数据和详细信息。 将提供许多有用的信息,如环境变量,网络设置或分配的资源。podman inspect

由于容器在无根模式下运行,因此不会为容器分配 IP 地址。

[root@localhost ~]# podman inspect 13aeb44ac619
[
    {
        "Id": "13aeb44ac6194d8755236dd5befe5a4914d1ee2e71e9918ebee1aa62098c3013",
        "Created": "2021-12-14T19:00:27.839913953+08:00",
        "Path": "sh",
        "Args": [
            "sh"
        ],
······

查看容器日志

[root@localhost ~]# podman logs 13aeb44ac619

查看容器pid

[root@localhost ~]# podman top 13aeb44ac619
USER   PID   PPID   %CPU    ELAPSED           TTY     TIME   COMMAND
root   1     0      0.000   3m42.512950836s   pts/0   0s     sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值