podman的部署及一些基础命令的使用

podman部署及应用

1. 什么是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 客户端。

2. podman部署

Podman 在 CentOS 8 和 Stream 的 AppStream 存储库中可用,可直接进行yum安装。

[root@localhost ~]# dnf install -y podman
Failed to set locale, defaulting to C.UTF-8
BaseOS                                          1.3 MB/s | 3.9 kB     00:00    
AppStream                                       3.4 MB/s | 4.4 kB     00:00    
Dependencies resolved.
================================================================================
 Package           Arch   Version                               Repo       Size
================================================================================
Installing:
 podman            x86_64 1:3.4.1-3.module_el8.6.0+954+963caf36 AppStream  12 M
Installing dependencies:
 ······
Complete!
[root@localhost ~]# 

3. podman用法

  • 查看版本及详细信息
[root@localhost ~]# podman -v
podman version 3.4.1-dev
[root@localhost ~]# podman version
Version:      3.4.1-dev
API Version:  3.4.1-dev
Go Version:   go1.16.7
Built:        Wed Oct 20 00:11:42 2021
OS/Arch:      linux/amd64
[root@localhost ~]# podman info
host:
  arch: amd64
  buildahVersion: 1.23.1
  cgroupControllers:
······
APIVersion: 3.4.1-dev
  Built: 1634659902
  BuiltTime: Wed Oct 20 00:11:42 2021
  GitCommit: ""
  GoVersion: go1.16.7
  OsArch: linux/amd64
  Version: 3.4.1-dev

[root@localhost ~]# 

4. podman镜像管理常用命令

4.1 pull

  • 拉取镜像
[root@localhost ~]# podman pull httpd
✔ docker.io/library/httpd:latest
Trying to pull docker.io/library/httpd:latest...
Getting image source signatures
Copying blob 80e368ef21fc done  
Copying blob 4340e7be3d7f done  
Copying blob aed046121ed8 done  
Copying blob 80cb79a80bbe done  
Copying blob 1efc276f4ff9 done  
Copying config f2a976f932 done  
Writing manifest to image destination
Storing signatures
f2a976f932ec6fe48978c1cdde2c8217a497b1f080c80e49049e02757302cf74

4.2 images

  • 查看系统中的所有镜像
[root@localhost ~]# podman images
REPOSITORY               TAG         IMAGE ID      CREATED      SIZE
docker.io/library/httpd  latest      f2a976f932ec  12 days ago  149 MB

4.3 diff

  • 检查映像文件系统的更改
[root@localhost ~]# podman diff httpd
C /usr
C /usr/local
C /usr/local/bin
A /usr/local/bin/httpd-foreground
[root@localhost ~]# 

4.4 history

  • 显示指定镜像的历史记录
[root@localhost ~]# podman image history httpd
ID            CREATED      CREATED BY                                     SIZE              COMMENT
f2a976f932ec  12 days ago  /bin/sh -c #(nop)  CMD ["httpd-foreground"]    0 B               
<missing>     12 days ago  /bin/sh -c #(nop)  EXPOSE 80                   0 B               
<missing>     12 days ago  /bin/sh -c #(nop) COPY file:c432ff61c4993e...  3.58 kB           
<missing>     12 days ago  /bin/sh -c #(nop)  STOPSIGNAL SIGWINCH         0 B               
<missing>     12 days ago  /bin/sh -c set -eux;                                             savedAptMark="$(apt...  60.4 MB     
<missing>     12 days ago  /bin/sh -c #(nop)  ENV HTTPD_PATCHES=          0 B               
<missing>     12 days ago  /bin/sh -c #(nop)  ENV HTTPD_SHA256=eb397f...  0 B               
<missing>     12 days ago  /bin/sh -c #(nop)  ENV HTTPD_VERSION=2.4.54    0 B               
<missing>     12 days ago  /bin/sh -c set -eux;                           apt-get update;   apt...      5.1 MB      
<missing>     12 days ago  /bin/sh -c #(nop) WORKDIR /usr/local/apache2   0 B               
<missing>     12 days ago  /bin/sh -c mkdir -p "$HTTPD_PREFIX"            && ch...          3.07 kB     
<missing>     12 days ago  /bin/sh -c #(nop)  ENV PATH=/usr/local/apa...  0 B               
<missing>     12 days ago  /bin/sh -c #(nop)  ENV HTTPD_PREFIX=/usr/l...  0 B               
<missing>     12 days ago  /bin/sh -c #(nop)  CMD ["bash"]                0 B               
<missing>     12 days ago  /bin/sh -c #(nop) ADD file:0eae0dca665c704...  83.9 MB           
[root@localhost ~]# 

4.5 inspect

  • 显示镜像的配置
[root@localhost ~]# podman image inspect httpd
[
    {
        "Id": "f2a976f932ec6fe48978c1cdde2c8217a497b1f080c80e49049e02757302cf74",
        "Digest": "sha256:343452ec820a5d59eb3ab9aaa6201d193f91c3354f8c4f29705796d9353d4cc6",
        "RepoTags": [
            "docker.io/library/httpd:latest"
        ],
        "RepoDigests": [
            "docker.io/library/httpd@sha256:343452ec820a5d59eb3ab9aaa6201d193f91c3354f8c4f29705796d9353d4cc6",
            "docker.io/library/httpd@sha256:98778663b10c3952e9d7dd8a10e1ca2a8ce31f11b5f0ff9d7b3b36ddb8201db8"
        ],
······
"NamesHistory": [
            "docker.io/library/httpd:latest"
        ]
    }
]
[root@localhost ~]# 

4.6 list

  • 列出本地存储的镜像
[root@localhost ~]# podman image list
REPOSITORY               TAG         IMAGE ID      CREATED      SIZE
docker.io/library/httpd  latest      f2a976f932ec  12 days ago  149 MB
[root@localhost ~]# 

4.7 rm

  • 删除镜像
[root@localhost ~]# podman image rm httpd
Untagged: docker.io/library/httpd:latest
Deleted: f2a976f932ec6fe48978c1cdde2c8217a497b1f080c80e49049e02757302cf74
[root@localhost ~]# podman images
REPOSITORY  TAG         IMAGE ID    CREATED     SIZE
[root@localhost ~]# 

4.8 save

  • 将镜像保存到本地
[root@localhost ~]# podman image save busybox > busybox.tar
[root@localhost ~]# ls
anaconda-ks.cfg  busybox.tar  http.tar
[root@localhost ~]# 

4.9 load

  • 从tar存档加载镜像
[root@localhost ~]# podman image load < busybox.tar 
Getting image source signatures
Copying blob 084326605ab6 skipped: already exists  
Copying config 7a80323521 done  
Writing manifest to image destination
Storing signatures
Loaded image(s): docker.io/library/busybox:latest
[root@localhost ~]# podman image list
'REPOSITORY                 TAG         IMAGE ID      CREATED      SIZE
docker.io/library/busybox  latest      7a80323521cc  2 weeks ago  1.47 MB
[root@localhost ~]# 

4.10 prune

  • 删除未使用的镜像
[root@localhost ~]# podman image prune
WARNING! This command removes all dangling images.
Are you sure you want to continue? [y/N] y

4.11 search

  • 搜索镜像
[root@localhost ~]# 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/busybox42/haraka-docker-centos     CentOS Haraka build with spamassassin, redis...  1                       [OK]
docker.io   docker.io/busybox42/nginx_php-docker-centos  This is a nginx/php-fpm server running on Ce...  1                       [OK]
[root@localhost ~]# 

4.12 tree

  • 以树格式打印镜像的图层层次结构
[root@localhost ~]# podman image tree busybox
Image ID: 7a80323521cc
Tags:     [docker.io/library/busybox:latest]
Size:     1.468MB
Image Layers
└── ID: 084326605ab6 Size: 1.463MB Top Layer of: [docker.io/library/busybox:latest]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Docker部署服务的步骤可以概括为以下几步: 1. 编写Dockerfile:Dockerfile是Docker镜像构建的脚本文件,定义了应用程序的环境和依赖项。Dockerfile中包含了从哪个基础镜像开始构建、安装应用程序和依赖项、暴露端口、设置环境变量等内容。 2. 构建Docker镜像:使用Dockerfile构建Docker镜像,可以使用docker build命令来进行构建。构建完成后,可以使用docker images命令查看本地的Docker镜像列表。 3. 运行Docker容器使用docker run命令来启动Docker容器,可以指定容器的名称、端口映射、环境变量等参数。在运行Docker容器时,可以指定使用哪个Docker镜像来构建容器。 4. 进行测试和调试:在容器运行起来后,可以使用docker logs命令查看容器的日志信息,使用docker exec命令进入容器内部进行调试和测试。如果需要修改容器内部的配置文件或数据,可以使用docker cp命令将宿主机的文件复制到容器内部。 5. 部署到生产环境:在进行测试和调试后,如果需要将Docker容器部署到生产环境,可以使用Docker Compose或Kubernetes等工具进行容器编排和管理。这些工具可以帮助我们更方便地管理多个容器、进行负载均衡、实现高可用性等功能。 需要注意的是,在使用Docker部署服务时,需要根据实际情况进行调整和优化,例如使用最小化的基础镜像、合理设置容器资源限制、进行安全性检查等等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值