Podman的部署与常用命令

Podman的部署与常用命令

podman简介掌握docker

Podman是一个开源项目,可在大多数Linux平台上使用并开源在GitHub上。Podman是一个无守护进程的容器引擎,用于在Linux系统上开发,管理和运行Open Container Initiative(OCI)容器和容器镜像。Podman提供了一个与Docker兼容的命令行前端,它可以简单地作为Docker cli,简单地说你可以直接添加别名:alias docker = podman来使用podman。

Podman控制下的容器可以由root用户运行,也可以由非特权用户运行。Podman管理整个容器的生态系统,其包括pod,容器,容器镜像,和使用libpod library的容器卷。Podman专注于帮助您维护和修改OCI容器镜像的所有命令和功能,例如拉取和标记。它允许您在生产环境中创建,运行和维护从这些映像创建的容器。

在这里插入图片描述

Podman 比较简单粗暴,它不使用 Daemon,而是直接通过 OCI runtime(默认也是 runc)来启动容器,所以容器的进程是 podman 的子进程。这比较像 Linux 的 fork/exec 模型,而 Docker 采用的是 C/S(客户端/服务器)模型。与 C/S 模型相比,fork/exec 模型有很多优势,比如:

系统管理员可以知道某个容器进程到底是谁启动的。
如果利用 cgroup 对 podman 做一些限制,那么所有创建的容器都会被限制。
SD_NOTIFY : 如果将 podman 命令放入 systemd 单元文件中,容器进程可以通过 podman
返回通知,表明服务已准备好接收任务。
socket 激活 : 可以将连接的 socket 从 systemd 传递到 podman,并传递到容器进程以便使用它们。
Podman 兼容 Docker吗?
大部分是兼容的,例如:

1.可以直接使用 Docker 镜像

2.命令非常相似

安装podman

//查看你的包里面有没有podman
[root@localhost ~]# dnf list all | grep podman
//安装podman
[root@localhost ~]# dnf -y install podman-docker.noarch
//查看版本号
[root@localhost ~]# podman -v
podman version 3.3.1
//永久配置Podman的别名为docker
[root@localhost ~]# echo "alias docker=podman" >> .bashrc
[root@localhost ~]# source
//使用docker命令查看本地仓库
[root@localhost ~]# docker images
REPOSITORY  TAG         IMAGE ID    CREATED     SIZE
//配置加速器
[root@localhost ~]# vim /etc/containers/registries.conf
unqualified-search-registries = [ "docker.io"]  //这里选择只从一个一个源里面查找
[[registry]]
   prefix = "docker.lo"
   location = location = "docker.mirrors.ustc.edu.cn" //这里只用填地址

//查看加速器是否配置成功
[root@localhost ~]# podman info
registries:
  docker.lo:
    Blocked: false
    Insecure: false
    Location: docker.mirrors.ustc.edu.cn
    MirrorByDigestOnly: false
    Mirrors: null
    Prefix: docker.lo
  search:
  - docker.io
store:

Podman的命令使用

attach 附加到正在运行的容器
commit 从更改的容器创建新镜像
build 使用 Dockerfile 说明构建镜像
create 创建一个容器,但不启动它
diff 检查容器文件系统的更改
exec 在正在运行的容器中运行进程
export 将容器的文件系统内容导出为 tar 归档
help, h 显示某个命令的命令或帮助列表
history 显示指定镜像的历史记录
images 列出本地存储中的镜像
import 导入 tarball 创建文件系统映像
info 显示系统信息
inspect 显示容器或镜像的配置
kill 向运行的一个或多个容器发送特定信号
load 从存档加载镜像
login 登录到容器 registry
logout 从容器 registry 中登出
logs 获取容器日志
mount 挂载可运行的容器根文件系统
pause 暂停一个或多个容器中的所有进程
ps 列出容器
port 列出容器的端口映射或特定映射
pull 从 registry 中拉取镜像
push 将镜像推送到指定的目的地
restart 重启一个或多个容器
rm 从主机中删除一个或多个容器。如果要运行,添加 -f。
rmi 从本地存储中移除一个或多个镜像
run 在新容器中运行命令
save 将镜像保存到存档中
search 在 registry 中搜索镜像
start 启动一个或多个容器
stats 为一个或多个容器显示 CPU、内存、网络 I/O、块 I/O 和 PID 百分比
stop 停止一个或多个容器
tag 为本地镜像添加额外名称
top 显示容器的运行进程
umount, unmount 卸载正常工作容器的根文件系统
unpause 取消暂停一个或多个容器中的流程
version 显示 podman 版本信息
wait 在一个或多个容器上阻止

容器

podman run           创建并启动容器
//参数说明
    -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
    -d: 后台运行容器,并返回容器ID;
    -i: 以交互模式运行容器,通常与 -t 同时使用;
    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    -P: 随机端口映射,容器内部端口随机映射到主机的端口
    -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
    --name="nginx-lb": 为容器指定一个名称;
    --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
    --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
    -h "mars": 指定容器的hostname;
    -e username="ritchie": 设置环境变量
podman start         启动容器
podman ps            查看容器
podman stop          终止容器
podman restart       重启容器
podman attach        进入容器
podman exec          进入容器
podman export        导出容器
podman import        导入容器快照
podman rm            删除容器
podman logs          查看日志

镜像

podman search                检索镜像
podman pull                  获取镜像
podman images                列出镜像
podman image Is              列出镜像
podman rmi                   删除镜像
podman image rm              删除镜像
podman save                  导出镜像
podman load                  导入镜像
podmanfile                   定制镜像(三个)
  podman build             构建镜像
    podman run               运行镜像
    podmanfile               常用指令(四个)
      COPY                 复制文件
        ADD                  高级复制
        CMD                  容器启动命令
        ENV                  环境变量
        EXPOSE               暴露端口

常用命令演示

镜像

podman search 检索镜像

[root@localhost ~]# podman login docker.io 
Username: xiaopihai123    
Password: 
Login Succeeded!
[root@localhost ~]# podman 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                      
docker.io   docker.io/radial/busyboxplus              Full-chain, Internet enabled, busybox made f...  49                      [OK]
docker.io   docker.io/vukomir/busybox                 busybox and curl                                 1                       
docker.io   docker.io/odise/busybox-curl                                                               4                       [OK]
docker.io   docker.io/arm64v8/busybox                 Busybox base image.                              4                       
docker.io   docker.io/amd64/busybox                   Busybox base image.                              0                       
docker.io   docker.io/busybox42/zimbra-docker-centos  A Zimbra Docker image, based in ZCS 8.8.9 an...  2                       [OK]
docker.io   docker.io/joeshaw/busybox-nonroot         Busybox container with non-root user nobody      2                       
docker.io   docker.io/ppc64le/busybox                 Busybox base image.                              1                       
docker.io   docker.io/p7ppc64/busybox                 Busybox base image for ppc64.                    2                       
docker.io   docker.io/s390x/busybox                   Busybox base image.                              2                       
docker.io   docker.io/prom/busybox                    Prometheus Busybox Docker base images            2                       [OK]
docker.io   docker.io/arm32v7/busybox                 Busybox base image.                              10                      
docker.io   docker.io/spotify/busybox                 Spotify fork of https://hub.docker.com/_/bus...  1                       
docker.io   docker.io/busybox42/alpine-pod                                                             0                       
docker.io   docker.io/i386/busybox                    Busybox base image.                              3                       
docker.io   docker.io/busybox42/haraka-docker-centos  CentOS Haraka build with spamassassin, redis...  1                       [OK]
docker.io   docker.io/arm32v5/busybox                 Busybox base image.       

podman pull 获取镜像

[root@localhost ~]#  podman pull 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
7a80323521ccd4c2b4b423fa6e38e5cea156600f40cd855e464cc52a321a24dd

podman images 列出镜像

podman image Is 列出镜像

[root@localhost ~]# podman images
REPOSITORY                 TAG         IMAGE ID      CREATED      SIZE
docker.io/library/busybox  latest      7a80323521cc  2 weeks ago  1.47 MB
[root@localhost ~]# podman image ls
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
[root@localhost ~]# podman image ls
REPOSITORY  TAG         IMAGE ID    CREATED     SIZE

podman save 导出镜像

[root@localhost ~]# podman save busybox > busybox.tar
[root@localhost ~]# ls
anaconda-ks.cfg  busybox.tar

podman load 导入镜像

[root@localhost ~]# podman image load < busybox.tar
Getting image source signatures
Copying blob 084326605ab6 [--------------------------------------] 0.0b / 0.0b
Copying config 7a80323521 done  
Writing manifest to image destination
Storing signatures
Loaded image(s): docker.io/library/busybox:latest

显示镜像的历史记录

[root@localhost ~]# podman history busybox
ID            CREATED      CREATED BY                                     SIZE        COMMENT
7a80323521cc  2 weeks ago  /bin/sh -c #(nop)  CMD ["sh"]                  0 B         
<missing>     2 weeks ago  /bin/sh -c #(nop) ADD file:03ed8a1a0e4c803...  1.46 MB     

显示镜像的配置信息

[root@localhost ~]# podman image inspect busybox
[
    {
        "Id": "7a80323521ccd4c2b4b423fa6e38e5cea156600f40cd855e464cc52a321a24dd",
        "Digest": "sha256:ef320ff10026a50cf5f0213d35537ce0041ac1d96e9b7800bafd8bc9eff6c693",
        "RepoTags": [
            "docker.io/library/busybox:latest"
        ],
        "RepoDigests": [
            "docker.io/library/busybox@sha256:98de1ad411c6d08e50f26f392f3bc6cd65f686469b7c22a85c7b5fb1b820c154",
            "docker.io/library/busybox@sha256:da49ff878ad8a35695af6aeffbdb4954c3877b0382a053c61468f1086a9b1016",
            "docker.io/library/busybox@sha256:ef320ff10026a50cf5f0213d35537ce0041ac1d96e9b7800bafd8bc9eff6c693"
        ],
        ......

容器

podman run 创建并启动容器

[root@localhost ~]#  podman run -it busybox
/ # 

podman start 启动容器

[root@localhost ~]# podman ps -a
CONTAINER ID  IMAGE                             COMMAND     CREATED             STATUS                     PORTS       NAMES
e45b8c2eb592  docker.io/library/busybox:latest  sh          About a minute ago  Exited (0) 50 seconds ago              tender_robinson

[root@localhost ~]# podman start  e45b8c2eb592 
e45b8c2eb592

podman ps 查看容器

[root@localhost ~]# podman ps   
CONTAINER ID  IMAGE                             COMMAND     CREATED        STATUS             PORTS       NAMES
e45b8c2eb592  docker.io/library/busybox:latest  sh          2 minutes ago  Up 48 seconds ago              tender_robinson

podman stop 终止容器

[root@localhost ~]# podman stop e45b8c2eb592
e45b8c2eb592
[root@localhost ~]# podman ps   
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

podman restart 重启容器

[root@localhost ~]# podman restart   e45b8c2eb592
e45b8c2eb5929818186c1cdab99ef9a9a079384184692067c7867a7470c149d1
[root@localhost ~]# podman ps   
CONTAINER ID  IMAGE                             COMMAND     CREATED        STATUS             PORTS       NAMES
e45b8c2eb592  docker.io/library/busybox:latest  sh          5 minutes ago  Up 31 seconds ago              tender_robinson

podman attach 进入容器

podman exec

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



[root@localhost ~]# podman  exec -it tender_robinson sh
/ # 

podman rm 删除容器

[root@localhost ~]# podman rm  -f tender_robinson
e45b8c2eb5929818186c1cdab99ef9a9a079384184692067c7867a7470c149d1

podman logs 查看日志

[root@localhost ~]# podman logs lxx
/ # exit

显示容器的映射端口

[root@localhost ~]# podman  port 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值