Podman 远程客户端 for macOS 和 Windows
注意:对于在Windows上运行Podman,请参考Podman for Windows指南,该指南使用推荐的Podman管理的Linux后端方法。对于Mac,请参阅Podman安装说明。本指南涵盖了Podman与自定义Linux VM或远程外部Linux系统的高级用法。
简介
Podman的核心运行时环境只能在Linux操作系统上运行。但是,其他操作系统可以使用“远程客户端”来管理它们的容器到一个Linux后端。这个远程客户端几乎与标准的Podman程序相同。对于远程客户端来说没有意义的某些功能已被移除。例如,已经移除了容器命令的“--latest”开关。
简要架构
远程客户端使用客户端-服务器模型。你需要在一个Linux机器或VM上安装Podman,并且该机器或VM也需要运行SSH守护进程。在本地操作系统上,当你执行Podman命令时,Podman通过SSH连接到服务器。然后,它通过systemd套接字激活连接到Podman服务。Podman命令在服务器上执行。从客户端的角度来看,它看起来就像Podman在本地运行一样。
获取和安装Podman
在macOS和Windows上获取和安装Podman远程客户端主要涉及在远程Linux后端上安装和运行Podman,并通过SSH在本地系统上与其交互。以下是针对这两种操作系统的详细步骤:
macOS
在macOS上,你可以通过几种方法安装Podman,但最常用的是使用Homebrew。以下是安装步骤:
打开终端并输入以下命令来安装Homebrew(如果尚未安装):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
使用Homebrew安装Podman:
brew install podman
配置Podman以在macOS上以非root模式运行(如果需要)。
设置SSH以允许从macOS到远程Linux服务器的连接(如果需要)。
使用Podman远程客户端连接到你的Linux后端,并开始管理容器。
Windows
在Windows上,由于Podman的核心运行环境只能在Linux上运行,因此你需要使用Podman管理的Linux后端,这通常涉及到使用Windows Subsystem for Linux (WSL) 2或在Windows上运行的Linux虚拟机。以下是安装和使用Podman的大致步骤:
确保你的Windows系统支持并启用了WSL 2。
从Microsoft Store安装适用于Linux的Windows子系统(如果需要)。
启用虚拟机功能并在BIOS中禁用安全启动(如果需要)。
从Microsoft Store安装一个Linux发行版(例如Ubuntu)。
在WSL 2 Linux发行版中安装Podman。
设置SSH以允许从Windows到WSL 2 Linux发行版的连接。
使用Podman远程客户端连接到你的WSL 2 Linux后端,并开始管理容器。
请注意,对于Windows和macOS用户,你可能需要配置SSH以允许从你的本地系统访问Linux后端。这通常涉及到生成SSH密钥对,并在Linux后端上配置SSH服务以接受你的密钥。
一旦你设置好远程Linux后端并安装了Podman远程客户端,你就可以在macOS或Windows上使用Podman命令来管理你的容器了。这些命令将通过网络发送到Linux后端执行,而结果则会返回给你的本地系统。
由于具体的安装和配置步骤可能会因操作系统版本、Podman版本以及其他因素而有所不同,因此建议查阅Podman的官方文档或相关社区资源以获取最准确和最新的信息。此外,如果你遇到任何问题或困难,也可以在这些资源中寻找帮助或寻求支持。
获取和安装 Podman
Windows
安装 Windows Podman 客户端首先需要下载 Podman Windows 安装程序。Podman 安装程序随每个 Podman 版本一起构建,可从其发布说明页面下载。Windows 安装程序文件名为 podman-#.#.#-setup.exe
,其中 #
符号代表 Podman 的版本号。
将安装程序下载到 Windows 主机后,只需双击安装程序,Podman 就会安装完成。安装程序还会设置路径,将 podman
添加到默认用户路径中。
Podman 必须在命令提示符下使用 Windows 命令提示符 (cmd.exe
) 或 PowerShell (pwsh.exe
) 应用程序运行。
macOS
Mac 客户端可通过 Homebrew 获取。你可以按照 Homebrew 网站上的说明下载 Homebrew。使用以下命令安装 Podman:
brew install podman
创建第一个连接
在服务器机器上启用 Podman 服务
在执行任何 Podman 客户端命令之前,你必须在 Linux 服务器上启用 podman.sock SystemD 服务。在这些示例中,我们以正常用户(也称为无特权用户或 rootless 用户)身份运行 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
文件中。在 macOS 上,你可以使用 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 客户端配置中添加一个新的连接,名为 baude
。这个连接将使用位于 c:\Users\baude\.ssh\id_rsa
的 SSH 私钥,并通过 SSH 连接到 192.168.122.1
服务器上监听在 /run/user/1000/podman/podman.sock
的 Podman 套接字。你可以根据需要替换这些值,以适应你的实际环境。
配置好连接后,你就可以像平常一样使用 Podman 命令了,不过它们现在会通过配置的 SSH 连接在远程服务器上执行。
请注意,对于 Windows 用户,你可能需要确保你的 SSH 客户端(如 OpenSSH 或 PuTTY)已正确安装,并且其路径已添加到你的系统环境变量中,以便 Podman 可以调用它。同时,你也需要确保你的私钥文件路径正确无误,并且私钥的权限设置得当,以防止未经授权的访问。
这将会向 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 命令使用。
历史
最初发布于 Red Hat Enable Sysadmin