跳到主要内容

podman-remote- Podman 的远程命令行界面:用于 pods、容器和镜像的简单管理工具

摘要

podman-remote [选项] 命令

描述

Podman(Pod 管理器)是一个功能全面的容器引擎,也是一个简单的无守护进程工具。 Podman 提供了一个与 Docker-CLI 相兼容的命令行界面,这有助于从其他容器引擎过渡,并允许管理 pods、容器和镜像。简单来说,你可以设置别名 alias docker=podman。 大多数 Podman 命令都可以作为普通用户运行,而无需额外的权限。

Podman 内部使用 Buildah(1) 来创建容器镜像。这两个工具共享镜像(而不是容器)存储,因此每个工具都可以使用或操作由另一个工具创建的镜像(但不是容器)。

Podman-remote 提供了一个本地客户端,通过 SSH 连接中的 RESTful API 与 Podman 后端节点进行交互。在这种情况下,Podman 节点是一个安装了 Podman 并激活了 API 服务的 Linux 系统。可以使用标志、环境变量或在 containers.conf 中传递此会话的凭据。

containers.conf 文件在 Linux 和 Mac 上位于 $HOME/.config/containers/containers.conf,在 Windows 上位于 %APPDATA%\containers\containers.conf

podman[全局选项]

全局选项

--connection=name, -c

远程连接名称

如果设置了环境变量 CONTAINER_CONNECTION,则此选项将覆盖它。

--help, -h

打印用法说明

--identity=path

ssh 标识文件的路径。如果标识文件已加密,Podman 会提示用户输入密语。 如果没有提供标识文件且没有提供用户,Podman 默认使用运行 podman 命令的用户。 Podman 会在远程服务器上提示输入登录密码。

身份值解析优先级:

  • 命令行值
  • 如果找到 CONTAINER_HOST,则使用环境变量 CONTAINER_SSHKEY
  • containers.conf

--log-level=level

记录高于指定级别的日志消息:debug、info、warn、error(默认)、fatal 或 panic

--url=value

访问 Podman 服务的 URL(默认从 containers.conf 获取,无特权用户为 "unix:///run/user/$UID/podman/podman.sock",root 用户为 "unix:///run/podman/podman.sock")。

  • CONTAINER_HOST 的格式为 <schema>://[<user[:<password>]@]<host>[:<port>][<path>]
  • CONTAINER_PROXY 的格式为 <socks5|socks5h>://[<user[:<password>]@]<host>[:<port>]

详细情况:

  • schema 可以是以下之一
    • ssh(默认):通过 SSH 访问命名 hostport 上的本地 unix(7) 套接字
    • tcp:到命名 hostport 的未加密、未认证的 TCP 连接,如果设置了 CONTAINER_PROXY,则可以与代理一起工作
    • unix:在指定 path 上的本地 unix(7) 套接字,或者用户的默认套接字
  • user 默认为 root 或当前运行的用户(仅适用于 ssh
  • password 无默认值(仅适用于 ssh
  • host 必须提供,并且是托管 Podman 服务的机器的 IP 或名称(sshtcp
  • port 默认为 22(sshtcp
  • path 默认为 /run/podman/podman.sock,如果以无特权用户身份运行,则默认为 /run/user/$UID/podman/podman.sockunix),或者必须明确指定(ssh
  • CONTAINER_PROXY:使用代理(socks5socks5h)访问 Podman 服务(仅适用于 tcp

URL 值解析优先级:

  • 命令行值
  • 环境变量 CONTAINER_HOST
  • containers.conf 中的 engine.service_destinations 表,不包括 /usr/share/containers 目录
  • unix:///run/podman/podman.sock

远程连接使用本地的 containers.conf 作为默认值。

一些有效格式的 URL 示例:

  • unix:///run/podman/podman.sock
  • unix:///run/user/$UID/podman/podman.sock
  • ssh://notroot@localhost:22/run/user/$UID/podman/podman.sock
  • ssh://root@localhost:22/run/podman/podman.sock
  • tcp://localhost:34451
  • tcp://127.0.0.1:34451

--version

打印版本信息。

环境变量

Podman 可以从 containers.conf 文件中的 [engine] 表的 env 设置环境变量。这些变量可以通过在 podman 命令之前传递环境变量来覆盖。

CONTAINERS_CONF

设置 containers.conf 文件的默认位置。

CONTAINER_CONNECTION

设置默认 --connection 值以访问 Podman 服务。

CONTAINER_HOST

设置默认 --url 值以访问 Podman 服务。

CONTAINER_SSHKEY

设置默认 --identity 路径到用于访问 Podman 服务的 ssh 密钥文件值。

退出状态

podman 的退出代码提供了关于为什么容器无法运行或为什么退出的信息。当 podman 命令以非零代码退出时,退出代码遵循 chroot 标准,如下所示:

125 错误与 Podman 本身有关

$ podman run --foo busybox; echo $?
Error: unknown flag: --foo
125

126 执行一个 容器内的命令,但该 命令 无法被调用

$ podman run busybox /etc; echo $?
Error: container_linux.go:346: starting container process caused "exec: \"/etc\": permission denied": OCI runtime error
126

127 执行一个 容器内的命令,但该 命令 找不到

$ podman run busybox foo; echo $?
Error: container_linux.go:346: starting container process caused "exec: \"foo\": executable file not found in $PATH": OCI runtime error
127

退出代码 容器内的命令 的退出代码

$ podman run busybox /bin/sh -c 'exit 3'; echo $?
3

这些退出代码有助于用户了解 podman 命令失败或容器退出的原因,从而能够更好地诊断和解决问题。

命令

Podman 提供了丰富的命令来管理容器和镜像。以下是一些主要的 Podman 命令及其描述:

命令描述
podman attach附加到一个正在运行的容器。
podman build使用 Dockerfile 构建容器镜像。
podman commit基于已更改的容器创建新的镜像。
podman container管理容器。此命令提供了一系列子命令来创建、运行、列出、删除等操作容器。
podman cp在容器和本地文件系统之间复制文件/文件夹。
podman create创建一个新的容器,但不启动它。
podman diff检查容器或镜像文件系统的更改。
podman events监视 Podman 事件。此命令允许用户实时查看 Podman 产生的各种事件。
podman export将容器的文件系统内容导出为 tar 归档文件。
podman generate基于容器和 pod 生成结构化数据。
podman-healthcheck(1)管理容器的健康检查。
podman-history(1)显示镜像的历史记录。
podman-image(1)管理镜像。这个命令提供了多个子命令来列出、检查、删除等操作镜像。
podman-images(1)列出本地存储中的镜像。
podman-import(1)从 tarball 导入数据,并将其保存为文件系统镜像。
podman-info(1)显示与 Podman 相关的系统信息,如版本、容器和镜像的数量等。
podman-init(1)初始化一个容器。这个命令可以用来在容器内部运行一个初始化进程。
podman-inspect(1)显示容器或镜像的配置信息。
podman-kill(1)终止一个或多个容器的主进程。
podman-load(1)从容器镜像归档文件中加载镜像到容器存储中。
podman-logs(1)显示容器的日志。这个命令可以用来查看容器输出到标准输出或标准错误的信息。
podman-pause(1)暂停一个或多个容器。被暂停的容器将停止运行,但不会销毁。
podman-pod(1)管理由多个容器组成的组,称为 pod。这个命令提供了多个子命令来创建、运行等操作 pod。
podman-port(1)列出容器的端口映射信息。这个命令可以用来查看容器内部的端口如何映射到主机上。
podman-ps(1)打印出关于容器的信息。这个命令可以用来列出正在运行的容器,以及它们的状态和其他详细信息。
podman-pull(1)从注册表中拉取一个镜像。
podman-push(1)将本地存储中的镜像推送到其他地方。
podman-restart(1)重启一个或多个容器。
podman-rm(1)删除一个或多个容器。
podman-rmi(1)删除一个或多个本地存储的镜像。
podman-run(1)在新容器中运行一个命令。
podman-save(1)将镜像保存为容器归档文件。
podman-start(1)启动一个或多个容器。
podman-stop(1)停止一个或多个正在运行的容器。
podman-system(1)管理 Podman。这个命令提供了多个子命令来管理 Podman 的设置和状态。
podman-tag(1)为本地镜像添加一个额外的名称。
podman-top(1)显示容器中正在运行的进程。
podman-unpause(1)取消暂停一个或多个容器。
podman-version(1)显示 Podman 的版本信息。
podman-volume(1)命令用于管理 Podman 中的卷(Volumes)。

卷是容器文件系统的一部分,可以持久化存储数据,并在容器之间共享。使用此命令,用户可以创建、查看、删除、检查卷的状态以及执行其他与卷相关的操作。 除了上述命令外,Podman 还提供了其他命令,如 podman images(管理镜像)、podman info(显示系统信息)、podman login(登录到容器镜像仓库)、podman logout(从容器镜像仓库注销)、podman pull(从容器镜像仓库拉取镜像)、podman push(将镜像推送到容器镜像仓库)、等。

要获取更多关于每个命令的详细信息,可以使用 man 命令(例如 man podman-attach)来查看对应的手册页。这些手册页提供了命令的完整描述、选项、示例以及任何相关的注意事项。 以下是 podman-volume 命令的一些常用子命令和选项:

  • 创建卷:使用 podman volume create 命令可以创建一个新的卷。例如,要创建一个名为 myvolume 的卷,可以运行 podman volume create myvolume

  • 查看卷列表:使用 podman volume lspodman volume list 命令可以查看所有卷的列表。

  • 查看卷详情:使用 podman volume inspect <volume-name-or-id> 命令可以查看指定卷的详细信息,包括卷的名称、驱动程序、挂载点、创建时间等。

  • 删除卷:使用 podman volume rm <volume-name-or-id> 命令可以删除一个或多个卷。如果要删除正在使用的卷,可能需要先停止使用该卷的容器。

  • 使用卷:在创建容器时,可以使用 --mount-v 选项来挂载一个或多个卷到容器中。这样,容器就可以访问卷中存储的数据,并且数据会在容器停止或删除后仍然保留。

除了上述基本用法外,podman-volume 命令还支持其他高级选项和参数,可以根据具体需求进行定制。通过灵活使用这些选项,用户可以更好地管理和利用 Podman 中的卷功能,实现数据的持久化存储和共享。

请注意,具体的命令选项和用法可能会因 Podman 的版本而有所不同。建议查阅最新的 Podman 文档以获取最准确和详细的信息。 这些命令提供了 Podman 的基本功能,使用户能够执行从拉取和推送镜像,到运行和管理容器的完整流程。每个命令都有一系列的选项和参数,可以根据具体需求进行定制。通过组合使用这些命令,用户可以轻松地构建、部署和管理容器化应用程序。

默认配置文件

containers.conf ($HOME/.config/containers/containers.conf)

Podman 的命令行选项具有内置默认值。这些默认值可以通过 containers.conf 配置文件进行覆盖。

用户可以创建 $HOME/.config/containers/containers.conf 文件来修改默认值。如果此文件存在,Podman 会将其指定的字段与内置默认值合并,用户文件中指定的字段将覆盖内置默认值。

如果找不到 containers.conf 文件,Podman 将使用内置默认值。

也可以看看

podman(1), podman-system-service(1), containers.conf(5)

这些文件和相关命令提供了 Podman 的详细信息和用法。

  • containers.conf 文件允许用户自定义 Podman 的行为。通过修改此文件,用户可以覆盖 Podman 的默认设置,以满足特定的需求或偏好。这为用户提供了灵活性和控制权,以便更好地管理和使用容器。

  • podman(1) 是 Podman 的主命令,提供了创建、运行和管理容器的核心功能。通过查看该手册页,用户可以了解 Podman 的基本用法、选项和命令。

  • podman-system-service(1) 命令提供了管理 Podman 系统服务的功能。它允许用户启动、停止、重启 Podman 服务,并检查其状态。这对于在系统级别上管理和维护 Podman 很有用。

  • containers.conf(5)containers.conf 文件的文档,详细描述了该文件的格式、可用的配置项以及它们的含义。通过阅读此文档,用户可以了解如何正确配置 containers.conf 文件,以满足特定的需求。

这些资源共同提供了 Podman 的全面指南,帮助用户更好地理解和使用 Podman 工具来管理容器和容器化应用程序。