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 访问命名host
和port
上的本地 unix(7) 套接字tcp
:到命名host
和port
的未加密、未认证的 TCP 连接,如果设置了CONTAINER_PROXY
,则可以与代理一起工作unix
:在指定path
上的本地 unix(7) 套接字,或者用户的默认套接字
user
默认为root
或当前运行的用户(仅适用于ssh
)password
无默认值(仅适用于ssh
)host
必须提供,并且是托管 Podman 服务的机器的 IP 或名称(ssh
和tcp
)port
默认为 22(ssh
和tcp
)path
默认为/run/podman/podman.sock
,如果以无特权用户身份运行,则默认为/run/user/$UID/podman/podman.sock
(unix
),或者必须明确指定(ssh
)CONTAINER_PROXY
:使用代理(socks5
或socks5h
)访问 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 ls
或podman 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 工具来管理容器和容器化应用程序。