跳到主要内容

podman start - 启动一个或多个容器

摘要

podman start [选项] 容器 ...

podman container start [选项] 容器 ...

描述

使用容器 ID 或名称作为输入来启动一个或多个容器。attachinteractive 选项不能用来覆盖容器创建时使用的 --tty--interactive 选项。如果使用 --attach 选项启动一个已经运行的容器,Podman 将简单地附加到该容器。

选项

--all

启动所有容器,默认仅启动正在运行的容器。

--attach, -a

附加容器的 STDOUT 和 STDERR。默认值为 false。此选项不能用于启动多个容器时。

--detach-keys

--filter, -f

根据给定的参数筛选要启动的容器。 可以使用多个 --filter 标志来指定多个过滤器。 具有相同键的过滤器以包含方式工作,唯一的例外是 label,它以排除方式工作。具有不同键的过滤器始终以排除方式工作。

注意:--detach-keys 似乎是一个占位符,表示可能有一些与 detach-keys 相关的选项内容未在此处列出。在实际的 Podman 文档中,应该会有关于 detach-keys 的具体描述,它通常用于定义从容器分离时使用的按键序列。

在使用 podman start 命令时,你可以根据需要指定一个或多个容器,并使用上述选项来控制启动行为。如果指定了多个容器,则除 --attach 以外的选项将应用于所有容器。

示例

启动名为 mycontainer 的容器:

podman start mycontainer
```bash

启动所有容器:

```bashbash
podman start --all
```bash

使用过滤器启动特定标签的容器:

```bashbash
podman start --filter label=mylabel=myvalue mycontainer
```bash

:::warning 警告
请注意,上述示例假设你已经有一个名为 `mycontainer` 的容器,以及一个带有标签 `mylabel=myvalue` 的容器。你需要将这些示例中的容器名称和标签替换为你实际使用的容器名称和标签。
:::
以下是更新后的有效过滤器列表:

| **过滤器** | **描述** |
|------------|----------------------------------------------------------------------------------------|
| id | [ID] 容器的 ID(默认使用 CID 前缀进行匹配;接受正则表达式) |
| 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] 在给定时间或时长之前创建的容器 |
| interactive| 指示容器是否以交互模式运行(通常与 `-it` 标志一起使用) |
| latest | 选择最新的容器或镜像(通常用于选择最新的镜像版本) |
| sig-proxy | 控制是否将容器内的信号转发给容器进程(在某些情况下,例如使用 `docker exec` 时) |

`sig-proxy` 这个选项通常与 Docker 容器信号代理相关。当你使用 Docker 运行容器时,默认情况下(例如,当你使用 `docker run` 命令启动容器时),Docker 会代理发送给 `docker exec` 进程的所有信号到容器的主进程。这意味着,如果你在容器外部发送一个信号(比如 SIGTERM 或 SIGKILL),这个信号会被转发给容器内部的主进程。

`sig-proxy` 的默认值是 `true`,意味着信号代理是开启的。当你设置 `sig-proxy` 为 `false` 时,Docker 将不会代理发送给 `docker exec` 进程的信号到容器的主进程。这在某些情况下可能是有用的,比如当你想要对 `docker exec` 进程进行更细粒度的控制,或者当你想要避免信号被意外地转发给容器主进程时。

然而,需要注意的是,`sig-proxy` 通常不是一个用来过滤列出容器的选项。它是用于配置 `docker run` 或其他 Docker 命令行为的参数。当你使用 `docker ps` 或类似的命令来列出容器时,你不会使用 `sig-proxy` 作为过滤器。相反,你会使用前面列出的过滤器(如 `id`、`name`、`status` 等)来筛选和列出容器。

如果你在使用某个特定的 Docker 工具或扩展,并且 `sig-proxy` 作为一个选项出现,那么请查阅该工具或扩展的文档以了解其具体用法和含义。
请注意,`interactive`、`latest` 和 `sig-proxy` 并不是 Docker 容器列表命令(如 `docker ps` 或 `docker container ls`)的标准过滤器。这些可能是特定工具、扩展命令或您所在环境中的特定选项。通常情况下,它们不是用于筛选列出容器时的选项,而是与创建或管理容器时的行为相关。例如,`interactive` 通常与 `docker run` 命令一起使用,以启动一个交互式的容器会话。`latest` 通常用于选择最新的镜像版本,而不是用于筛选容器。`sig-proxy` 可能是与信号转发相关的设置,但不是直接用于过滤列出容器时的选项。因此,请根据您的实际上下文和环境,检查这些选项的具体含义和用法。

## 说明

这些示例展示了如何使用 `podman start` 命令来启动容器。`podman` 是一个开源项目,提供了与 Docker 兼容的容器引擎功能,但不需要守护进程运行。这些示例涵盖了启动单个容器、多个容器以及以交互模式启动容器的不同场景。

## 示例

### 启动指定容器

```bash
podman start mywebserver

这个命令将启动名为 mywebserver 的容器。

启动多个容器

podman start 860a4b231279 5421ab43b45

这个命令将同时启动两个容器,它们的 ID 分别是 860a4b2312795421ab43b45

以交互模式启动指定容器

podman start --interactive --attach 860a4b231279

这个命令将以交互模式启动 ID 为 860a4b231279 的容器,并将终端附加到容器上。这意味着你可以与容器内部的进程进行交互。

以交互模式启动最近创建的容器

podman start -i -l

这个命令将以交互模式启动最近创建的容器。选项 -i 表示交互模式,-l 表示最近一个。需要注意的是,这个选项在远程 Podman 客户端(包括 Mac 和 Windows(不包括 WSL2)机器)上是不可用的。

参见

podman(1) - podman 命令的手册页,提供了 podman 的详细信息和可用选项。

历史

这些示例最初由Brent Baude在 2018 年 11 月整理,Podman 项目从那时起不断发展,为容器化应用提供了更多功能和改进。