在 CentOS 8 上安装 Podman 容器
使用 ssh 作为 root 用户连接到 podman-01.recipes.com。
使用以下命令构建 dnf 缓存。
[root@podman-01 ~]# dnf makecache CentOS-8 - AppStream 2.3 kB/s | 4.3 kB 00:01 CentOS-8 - Base 1.7 kB/s | 3.9 kB 00:02 CentOS-8 - Extras 649 B/s | 1.5 kB 00:02 Metadata cache created.
使用 dnf 命令安装容器工具模块。
[root@podman-01 ~]# dnf install -y @container-tools
CentOS 8 上已经安装了 Podman 和相关的容器化工具。
在 CentOS 8 上使用 Podman 容器:
检查 Podman 版本。
[root@podman-01 ~]# podman version Version: 1.0.5 Go Version: go1.11.6 OS/Arch: linux/amd64
使用 podman 命令搜索图像。
[root@podman-01 ~]# podman search alpine --filter is-official=true INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/library/alpine A minimal Docker image based on Alpine Linux... 5937 [OK]
从在线注册表中拉取镜像。
[root@podman-01 ~]# podman pull docker.io/library/alpine Trying to pull docker.io/library/alpine...Getting image source signatures Copying blob 63bc94deeb28: 2.65 MiB / 2.67 MiB [===============================] Copying blob 63bc94deeb28: 2.67 MiB / 2.67 MiB [============================] 9s Copying config c85b8f829d1f: 1.48 KiB / 1.48 KiB [==========================] 0s Writing manifest to image destination Storing signatures c85b8f829d2f93a25fe91d2ce7dccf6ec723794875a77bb19633d38e926c788c
显示本地 podman 图像列表。
[root@podman-01 ~]# podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/alpine latest c85b8f829d1f 3 days ago 5.86 MB
检查 alpine Linux 镜像以获取更多详细信息。
[root@podman-01 ~]# podman inspect alpine [ { "Id": "c85b8f829d2f93a25fe91d2ce7dccf6ec723794875a77bb19633d38e926c788c", "Digest": "sha256:d371653a4f661a854ff051898003f4cb6c7f36d968a943c1d5cde1952bd93c80", "RepoTags": [ "docker.io/library/alpine:latest" ], "RepoDigests": [ "docker.io/library/alpine@sha256:d371653a4f661a854ff051898003f4cb6c7f36d968a943c1d5cde1952bd93c80" ], "Parent": "", "Comment": "", "Created": "2019-12-19T23:21:54.894824922Z", "Config": { "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "/bin/sh" ] }, "Version": "18.06.1-ce", "Author": "", "Architecture": "amd64", "Os": "linux", "Size": 5859848, "VirtualSize": 5859848, "GraphDriver": { "Name": "overlay", "Data": { "MergedDir": "/var/lib/containers/storage/overlay/6bc83681f1baa38776614f386dee8812f0063fab656810291bd7751e72a830f4/merged", "UpperDir": "/var/lib/containers/storage/overlay/6bc83681f1baa38776614f386dee8812f0063fab656810291bd7751e72a830f4/diff", "WorkDir": "/var/lib/containers/storage/overlay/6bc83681f1baa38776614f386dee8812f0063fab656810291bd7751e72a830f4/work" } }, "RootFS": { "Type": "layers", "Layers": [ "sha256:6bc83681f1baa38776614f386dee8812f0063fab656810291bd7751e72a830f4" ] }, "Labels": null, "Annotations": {}, "ManifestType": "application/vnd.docker.distribution.manifest.v2+json", "User": "", "History": [ { "created": "2019-12-19T23:21:54.731224548Z", "created_by": "/bin/sh -c #(nop) ADD file:c7d28fcb71c026d7956b381181e4792c8219b04904e722a9266322ef5b256df8 in / " }, { "created": "2019-12-19T23:21:54.894824922Z", "created_by": "/bin/sh -c #(nop) CMD [\"/bin/sh\"]", "empty_layer": true } ] } ]
从 alpine Linux 镜像创建并运行容器。
[root@podman-01 ~]# podman run -it --rm alpine /bin/sh / # uname -a Linux 299572d7599a 4.18.0-80.el8.x86_64 #1 SMP Tue Jun 4 09:19:46 UTC 2019 x86_64 Linux / # cat /etc/os-release NAME="Alpine Linux" ID=alpine VERSION_ID=3.11.0 PRETTY_NAME="Alpine Linux v3.11" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://bugs.alpinelinux.org/" / # exit
以分离模式运行 alpine Linux 容器。
[root@podman-01 ~]# podman run -d alpine 85dcf6ee27b2ff57b480e6a9484d96129e77534699390735ddc2f8366dd58737
检查最近的容器列表。
[root@podman-01 ~]# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f6cc375e3476 docker.io/library/alpine:latest /bin/sh 6 seconds ago Exited (0) 6 seconds ago heuristic_montalcini f3de35c18d7d docker.io/library/alpine:latest /bin/sh About a minute ago Exited (0) About a minute ago stoic_goodall 85dcf6ee27b2 docker.io/library/alpine:latest /bin/sh 6 minutes ago Exited (0) 6 minutes ago sad_benz
取出一个容器。
[root@podman-01 ~]# podman container rm f6cc375e3476 f6cc375e3476758431f2c7a9447b53c08fdda0171f96bdd63212356b48eafb90c
移除所有容器。
[root@podman-01 ~]# podman container rm $(podman ps -a -q) f3de35c18d7d54da9f97497db78e8a4f436b885b1c79765dcc1f847af2a1661a 85dcf6ee27b2ff57b483e6a9484d96129e775b4694390735ddc3f8366dd58737
删除图像。
[root@podman-01 ~]# podman rmi docker.io/library/alpine c85b8f829d1f93a25fe91d2ce7dccf7ec723794873a77bb12123d38e926c788c
如果我们使用过 Docker,我们可能已经观察到 podman 的命令语法与 docker 完全相同。
Podman 还与 Docker 镜像完全兼容。
我们已经成功地在 CentOS 8 上安装了 podman 容器。
在 Red Hat Enterprise Linux (RHEL) 8 中,已删除对 Docker 的支持。
而 RHEL 8 中引入了一个新的容器化平台 libpod(Podman 的容器管理库)。
作为分支,CentOS 8 也遵循相同的路径。
因此,要在 CentOS 8 中设置容器化平台,我们必须在我们的服务器上安装 podman(Pod Manager 工具)和相关软件包。
以下是这个新容器平台中使用的 CLI 工具。
- podman - 用于管理容器的客户端工具。
- skopeo - 用于将容器镜像复制到/从注册表复制的客户端工具。
- buildah - 用于构建 OCI(开放容器计划)抱怨容器的客户端工具。
- runc - 用于运行和使用 OCI 格式容器的容器运行时客户端。
在 CentOS 8 yum 存储库中,这些工具可以在不同的软件包中单独使用,也可以捆绑在一个通用模块中:container-tools。
安装所有这些工具的最佳方式是使用 container-tools 模块。
在本文中,我们将在 CentOS 8 上安装 Podman 容器,然后使用新的 podman 工具创建并运行一个测试容器。