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]