适用于macOS和Windows的Podman远程客户端

在 Windows 上运行 Podman,请参阅Windows 版 Podman 指南,该指南采用推荐方案——由 Podman 管理 Linux 后端。Mac 用户请参阅 Podman 安装说明。本指南涵盖在自定义 Linux 虚拟机或远程外部 Linux 系统上使用 Podman 的高级用法。

适用于macOS和Windows的Podman远程客户端

注意:在 Windows 上运行 Podman,请参阅Windows 版 Podman 指南,该指南采用推荐方案——由 Podman 管理 Linux 后端。Mac 用户请参阅 Podman 安装说明。本指南涵盖在自定义 Linux 虚拟机或远程外部 Linux 系统上使用 Podman 的高级用法。

引言

Podman核心运行时环境仅能在Linux操作系统上运行。但其他操作系统可通过“远程客户端”管理其容器,这些容器将连接至Linux后端。该远程客户端与标准Podman程序几乎完全相同,仅移除了对远程客户端无意义的特定功能。例如,容器命令中的“--latest”开关已被移除。

简要架构

远程客户端采用客户端-服务器模型。您需要在运行SSH守护进程的Linux机器或虚拟机上安装Podman。在本地操作系统上执行Podman命令时,Podman会通过SSH连接至服务器,随后利用systemd套接字激活机制连接到Podman服务。所有Podman命令均在服务器端执行。从客户端视角来看,Podman似乎在本地运行。

获取并安装Podman

Windows

安装 Windows Podman 客户端需先下载 Podman Windows 安装程序。该安装程序随每次 Podman 版本发布同步构建,可从其版本说明页面下载。Windows 安装程序文件名为 podman-#.#.#-setup.exe,其中 # 符号代表 Podman 的版本号。

将安装程序下载至 Windows 主机后,双击即可完成安装。安装路径默认设置为将 podman 添加至用户默认路径。

运行 Podman 时必须通过命令提示符操作,可使用 Windows 命令提示符 (cmd.exe) 或 PowerShell (pwsh.exe) 应用程序。

macOS

Mac客户端可通过Homebrew获取。您可参照其官网说明下载Homebrew。使用以下命令安装podman:

$ brew install podman

建立首个连接

在服务器机器上启用Podman服务

在执行任何 Podman 客户端命令之前,必须在 Linux 服务器上启用 podman.sock SystemD 服务。在本示例中,我们以普通非特权用户(即无特权用户)身份运行 Podman。默认情况下,无特权套接字监听路径为 /run/user/${UID}/podman/podman.sock。可通过以下命令永久启用并启动该套接字:

$ systemctl --user enable --now podman.socket

为了让套接字在用户未登录时也能正常工作,你需要为该用户启用 linger 功能。

sudo loginctl enable-linger $USER

你可以通过一个简单的Podman命令来验证套接字是否正在监听。

$ podman --remote info
host:
  arch: amd64
  buildahVersion: 1.16.0-dev
  cgroupVersion: v2
  conmon:
	package: conmon-2.0.19-1.fc32.x86_64

启用 sshd

若要使客户端能够与服务器通信,您需要在Linux机器上启用并启动SSH守护进程(如果当前尚未启用)。

sudo systemctl enable --now sshd

设置 SSH

远程 Podman 通过 SSH 在客户端与服务器之间进行通信。使用 SSH 密钥时,远程客户端的运行会显著流畅。要配置 SSH 连接,您需要在客户端机器上生成 SSH 密钥对。

$ ssh-keygen

您的公钥默认位于用户主目录下的 .ssh\id_rsa.pub 文件中。您需要将 id_rsa.pub 的内容复制并追加到 Linux 服务器上的 ~/.ssh/authorized_keys 文件中。在 Mac 系统上,可通过 ssh-copy-id 命令实现自动化操作。

若不使用 SSH 密钥,每次执行 Podman 命令时系统都会提示您输入登录密码。

使用客户端

使用 Podman 远程客户端的第一步是配置连接。

您可以使用 podman system connection add 命令添加连接。

C:\Users\baude> podman system connection add baude --identity c:\Users\baude\.ssh\id_rsa ssh://192.168.122.1/run/user/1000/podman/podman.sock

这将向Podman添加一个远程连接,若为首次添加的连接,则将其标记为默认连接。可通过 podman system connection list 命令查看现有连接列表。

C:\Users\baude> podman system connection list
Name	Identity 	URI
baude*	id_rsa	       ssh://baude@192.168.122.1/run/user/1000/podman/podman.sock

现在我们可以使用 podman info 来测试连接。

C:\Users\baude> podman info
host:
  arch: amd64
  buildahVersion: 1.16.0-dev
  cgroupVersion: v2
  conmon:
	package: conmon-2.0.19-1.fc32.x86_64

Podman 还引入了“--connection”参数,允许您使用已定义的其他连接。若未提供连接,则将使用默认连接。

C:\Users\baude> podman system connection --help

总结

您可以使用 Podman 远程客户端管理在 Linux 服务器上运行的容器。客户端与服务器之间的通信高度依赖于 SSH 连接,建议使用 SSH 密钥。在远程客户端安装 Podman 后,应通过 podman system connection add 命令设置连接,后续 Podman 命令将使用该连接。

历史

最初发表于红帽 Enable Sysadmin

   

学习本无底,前进莫徬徨。 —— 报摘
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号