Podman 停止命令删除容器

Podman stop command removes container

我正在让一个容器说“你好”,我正在尝试使用 podman 命令启动、停止和重新启动它。

[podman 版本:RHEL 上的 3.3.1]

我是运行这个命令:

  1. podman start hello

  2. podman stop hello

  3. podman start hello

第三个命令给出错误为:

Error: no container with name or ID "hello" found: no such container

我运行podmanpspodmanps -a 检查 运行 和可用容器。但是 none 显示“hello”容器。

我发现这个 link 之前有人在 github 上提出的错误,虽然我没有使用“--rm”命令但仍然遇到这个问题。

Podman stop removes the container

我在这里遗漏了什么或者需要向这个问题添加更多信息吗?

容器在您停止时不会自动删除,除非您使用 --rm 标志创建容器。

您没有指定如何创建 hello 容器。创建它时,您是否将 --rm 传递给 podman create?您所描述的行为对应于使用 --rm 标志创建容器的场景。

AutoRemove

如果你想知道主机退出后是否会自动删除给定的容器,那么检查HostConfig对象的AutoRemove布尔字段:

podman inspect --format \
 'automatically remove: {{if .HostConfig.AutoRemove}}yes{{else}}no{{end}}' \
 hello

这将显示 automatically remove: yesautomatically remove: no


示例 --rm

我们使用 --rm 标志创建以下容器 hello

podman create --rm --name hello alpine sleep 5000

我们可以用 podman ps -a 检查 hello 容器是否存在并且状态为 created.

我们还可以检查 AutoRemove 字段是否设置为 true:

$ podman inspect --format '{{.HostConfig.AutoRemove}}' hello
true

然后,我们用podman start hello启动容器。您可以检查容器是否 运行 podman ps.

如果您现在使用 podman stop hello 停止容器,您将无法再在 podman ps -a 提供的容器列表中看到它。即容器已被自动删除.


示例没有 --rm

如果我们重复相同的过程,但是在创建hello容器时没有--rm标志,这次容器停止时不会自动删除:

  1. 不通过--rm:

    创建容器
    podman create --name hello alpine sleep 5000
    

    检查 AutoRemove 字段是否设置为 false:

    $ podman inspect --format '{{.HostConfig.AutoRemove}}' hello
    false
    
  2. 开始吧:

    podman start hello
    
  3. 停止:

    podman stop hello
    

    您现在可以使用 podman ps -a 检查容器是否仍然存在。

  4. 重新启动它:

    podman restart hello
    

这次如果要移除容器,需要手动操作:

podman container rm -f hello

我会写下对我有用的命令。 (感谢@ネロク 的帮助命令)

就我而言,我的机器中已经存在容器。找到它如何 运行 的唯一方法是使用命令

podman inspect --format '{{.HostConfig.AutoRemove}}' hello

输出:

true --> 容器 运行 带有 --rm 参数 podman run -d --rm hello

false--> 容器 运行 没有 --rm 参数 podman run -d hello

对于第一种情况,当您停止容器时,它实际上会从您的机器中删除。 因此,在停止后尝试启动容器时会出错,

 podman start hello
 Error: no container with name or ID "hello" found: no such container