Podman -restart 命令详解
Podman 是一个强大的容器管理工具,用于在 Linux 系统上创建、运行和管理容器。其中,podman restart
命令用于重启已经存在的容器。这对于容器在运行过程中遇到问题时,或者需要更新配置后重新加载容器时非常有用。
基本语法
podman restart [OPTIONS] CONTAINER [CONTAINER...]
参数说明
- CONTAINER: 要重启的容器的名称或ID。可以指定一个或多个容器。
可选参数(OPTIONS)
- -a, --all: 重启所有容器,不论其当前状态。
- --cidfile: 从指定的文件中读取容器ID进行重启。可以指定多个文件。
- -l, --latest: 重启最新的容器。如果有多个容器,则只重启最后创建的容器。
- --running: 仅重启当前处于运行状态的容器。
- --time, -t: 设置容器重启的超时时间(以秒为单位)。如果容器在指定的时间内没有成功重启,则命令会失败。
--all, -a
无论当前状态如何,重启所有容器。
--cidfile
从指定的文件中读取容器 ID 并重启该容器。可以指定多次。
--filter, -f=filter
过滤要重启的容器。
可以使用多个 --filter 标志来指定多个过滤器。
具有相同键的过滤器是包含性的,唯一例外的是 label
过滤器,它是排他性的。具有不同键的过滤器总是排他性的。
关于 podman restart
命令的说明,它用于重启一个或多个容器。podman
是一个用于管理容器的工具,类似于 Docker,但更加轻量级。
在“选项”部分,有几个重要的选项被列出:
--all
或-a
:这个选项允许用户重启所有容器,无论它们当前是运行状态还是停止状态。--cidfile
:这个选项允许用户从指定的文件中读取容器 ID,并重启与该 ID 对应的容器。这对于批量处理或自动化脚本可能很有用,因为你可以在一个文件中列出多个容器 ID,并一次性重启它们。--filter
或-f
:这个选项允许用户基于特定条件过滤要重启的容器。例如,你可能只想重启具有特定标签的容器,或者只重启在某个时间点之后创建的容器。通过使用多个--filter
选项,你可以组合多个条件来进一步缩小要重启的容器的范围。注意,label
过滤器是排他性的,意味着如果指定了多个label
过滤器,它们不会组合使用,而是仅应用一个。而对于具有不同键的过滤器(例如标签、创建时间等),它们是排他性的,即它们不会互相影响。
以下列出了有效的过滤器:
过滤器 | 描述 |
---|---|
id | [ID] 容器的 ID(默认按前缀匹配;接受正则表达式) |
name | [Name] 容器的名称(接受正则表达式) |
label | [Key] 或 [Key=Value] 分配给容器的标签 |
exited | [Int] 容器的退出码 |
status | [Status] 容器的状态:'created'(已创建)、'exited'(已退出)、'paused'(已暂停)、'running'(运行中)、'unknown'(未知) |
ancestor | [ImageName] 用于创建容器的镜像或其后代 |
before | [ID] 或 [Name] 在此容器之前创建的容器 |
since | [ID] 或 [Name] 在此容器之后创建的容器 |
volume | [VolumeName] 或 [MountpointDestination] 容器中挂载的卷 |
health | [Status] healthy(健康)或 unhealthy(不健康) |
pod | [Pod] pod 的名称或完整或部分 ID |
network | [Network] 网络的名称或完整 ID |
until | [DateTime] 在给定时间之前创建的容器 |
这些过滤器可以单独或组合使用,以精确选择你想要重启的容器。例如,你可以使用 name
过滤器来只重启具有特定名称的容器,或者使用 status
过滤器来重启所有处于运行状态或已退出状态的容器。
--running
仅重启所有已经处于 running(运行中)状态的容器。
示例
重启特定容器
podman restart mycontainer
这将重启名为 mycontainer
的容器。
重启多个容器
podman restart container1 container2
这将同时重启名为 container1
和 container2
的两个容器。
重启最新创建的容器
podman restart -l
这将重启最后创建的容器。
重启所有运行中的容器
podman restart --running
使用 --running
标志将只重启当前处于运行状态的所有容器。
重启所有容器并设置超时时间
podman restart --all --time 10
这将重启所有容器,并设置每个容器的重启超时时间为 10 秒。
使用 cidfile 重启容器
假设你之前使用 --cidfile
选项运行了一个容器,并将容器ID保存在了某个文件中:
podman run --cidfile /tmp/mycontainer.cid ...
你可以使用相同的 cidfile 来重启这个容器:
podman restart --cidfile /tmp/mycontainer.cid
重启最新的容器。
$ podman restart -l
ec588fc80b05e19d3006bf2e8aa325f0a2e2ff1f609b7afb39176ca8e3e13467
通过容器的部分 ID 重启特定的容器。
$ podman restart ff6cf1
ff6cf1e5e77e6dba1efc7f3fcdb20e8b89ad8947bc0518be1fcb2c78681f226f
使用 4 秒的超时时间,通过名称重启两个容器。
$ podman restart --time 4 test1 test2
c3bb026838c30e5097f079fa365c9a4769d52e1017588278fa00d5c68ebc1502
17e13a63081a995136f907024bcfe50ff532917988a152da229db9d894c5a9ec
重启所有正在运行的容器。
podman restart --running
重启所有容器。
podman restart --all
使用在给定文件中指定的 ID 重启容器。
podman restart --cidfile /home/user/cidfile-1
podman restart --cidfile /home/user/cidfile-1 --cidfile ./cidfile-2
注意事项
- 在重启容器时,容器会先被停止,然后再次启动。这意味着容器内的所有运行状态(如内存中的数据)都会丢失。
- 如果容器在重启过程中遇到问题(如无法启动),
podman restart
命令可能会失败,并显示错误信息。 - 在使用
--time
选项时,要确保设置的超时时间足够长,以便容器能够正常重启。过短的超时时间可能会导致容器无法成功重启。
另请参阅
历史
2018 年 3 月,最初由 Matt Heon 整理编写。