使用 Podman 创建和销毁容器

在 Podman 系列的这一部分,让我们了解一下创建和删除容器。

如果您还不知道,Podman 是用于管理容器的 Docker 替代方案。 它遵循与 Docker 类似的命令结构。

预先拉取镜像

每个容器都需要一个图像才能存在。 没有图像,什么都不会执行。 因此,需要从镜像注册表中“拉取”镜像。

一些流行的图像注册表是:

使用 Podman 拉取镜像的语法如下:

podman pull [OPTIONS] FULLY_QUALIFIED_IMAGE_NAME[:tag|@digest]

如果你想知道什么 FULLY_QUALIFIED_IMAGE_NAME 意思是,看下面的两个命令:

# with FQIN
podman pull docker.io/library/debian

# without FQIN
podman pull debian

您可能已经注意到,在完全限定的图像名称中,格式如下: registry/username/image-name. 注册地址为 hub.docker.comdocker.io.

要拉取特定标签,请在图像名称后应用标签,后跟冒号 (:). 以下是拉取的命令 stable-slim Debian 镜像的标签:

podman pull docker.io/library/debian:stable-slim

列出可用图像

拉取一个或多个图像后,您可以 检查哪些图像在本地可用podman images 命令。 自从我拉了 debian:stable-slim 图像,我的输出如下所示:

$ podman images
REPOSITORY                TAG          IMAGE ID      CREATED     SIZE
docker.io/library/debian  stable-slim  86f9b934c377  2 days ago  77.8 MB

现在您有了自己的图像,您可以创建一个新容器。

创建容器

要使用 Podman 创建容器,请使用 podman run 以这种方式命令:

podman run [OPTIONS] image [COMMAND [ARGS]]

我会用 -d 保持容器在后台运行的选项。 我也会使用 -t 为 Debian 映像分配伪 TTY 的选项,因此它会继续运行。 您可以找到可用选项的完整列表 这里.

现在,我将创建一个基于 Debian 的简单容器 stable-slim 您之前拉取的图像。

podman run -d -t debian:stable-slim

如果容器创建成功,您将收到一个随机的字母数字字符串作为命令输出。 这是唯一的容器 ID。

61d1b10b5818f397c6fd8f1fc542a83810d21f81825bbfb9603b7d99f6322845

列出容器

要查看所有正在运行的容器,请使用 podman ps 命令。 这类似于 Linux 中的 ps 命令。 它不显示系统进程,而是显示正在运行的容器及其详细信息。

自从我用了 -t 选项作为保持 Debian 容器运行的 hack,让我们看看输出 podman ps 命令看起来像。

$ podman ps
CONTAINER ID  IMAGE                                 COMMAND     CREATED         STATUS             PORTS       NAMES
61d1b10b5818  docker.io/library/debian:stable-slim  bash        44 seconds ago  Up 44 seconds ago              gallant_mahavira

从这里,您可以获得有关我们的容器名称的各种详细信息。 一些细节是较短但唯一的容器 ID,用于创建此容器的图像,创建时间,主机的哪些端口映射到容器的哪些端口以及容器名称。

在这里,您可以看到使用的图像是 debian:stable-slim,它是在 44 秒前创建的,容器名称是 gallant_mahavira. 当未指定容器名称时,将随机生成一个名称。 您可以在使用创建容器时传递容器名称 --name CONTAINER_NAME 选项。

容器可以正在运行,也可以不运行(停止)。 停止的容器可以这样列出:

podman container list -a

我还没有任何停止的容器,所以让我们先学习如何停止它们。

停止容器

要停止容器,请使用 podman stop 命令与容器 ID 或容器名称。

下面是语法 podman stop 命令:

podman stop [CONTAINER_NAME|CONTAINER_ID]

让我使用它的名称停止正在运行的容器:

$ podman stop gallant_mahavira
gallant_mahavira

现在您可以使用上述命令列出所有容器,包括已停止的容器:

$ podman container list -a
CONTAINER ID  IMAGE                                 COMMAND     CREATED         STATUS                      PORTS       NAMES
61d1b10b5818  docker.io/library/debian:stable-slim  bash        14 minutes ago  Exited (137) 3 minutes ago              gallant_mahavira

💡命令 podman ps, podman container ps, podman container listpodman container ls 所有链接到同一个二进制文件,这些命令可以互换使用。 即,您可以运行 podman ps -a 命令而不是 podman container list -a 命令并获得相同的输出。

启动已停止的容器

要启动已停止或失败的容器,请使用 podman start 命令。

假设您从 Debian 映像创建的容器失败,无论出于何种原因,您都可以使用其容器名称或 ID 重新启动它,如下所示:

$ podman start 61d1b10b5818f397c6fd8f1fc542a83810d21f81825bbfb9603b7d99f6322845

销毁容器

要完全删除或销毁容器,您可以使用 podman rm 命令。

🚧请确保在删除之前停止容器。

一旦容器被删除,它就不再存在。 因此,当您检查 podman container list -a 命令,容器将不存在于列表中。

这是一个 example 使用 Podman 停止和删除容器。 我在 example.

$ podman ps
CONTAINER ID  IMAGE                                 COMMAND     CREATED         STATUS           PORTS       NAMES
61d1b10b5818  docker.io/library/debian:stable-slim  bash        44 minutes ago  Up 1 second ago              gallant_mahavira

$ podman stop gallant_mahavira
gallant_mahavira

$ podman rm 61d1b10b5818
61d1b10b5818f397c6fd8f1fc542a83810d21f81825bbfb9603b7d99f6322845

$ podman container list -a
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

正如您现在看到的,容器完全消失了。 如果需要,您可以使用所需的任何图像创建一个新容器。

结论

本教程涵盖了使用 Podman 进行容器管理的基础知识。 您了解了如何创建容器、列出它们、停止它们和删除它们。

如果您有任何疑问,请随时发表评论!