跳到主要内容

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。以下是安装步骤:

  1. 打开终端并输入以下命令来安装Homebrew(如果尚未安装):

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. 使用Homebrew安装Podman:

    brew install podman
  3. 配置Podman以在macOS上以非root模式运行(如果需要)。

  4. 设置SSH以允许从macOS到远程Linux服务器的连接(如果需要)。

  5. 使用Podman远程客户端连接到你的Linux后端,并开始管理容器。

Windows

在Windows上,由于Podman的核心运行环境只能在Linux上运行,因此你需要使用Podman管理的Linux后端,这通常涉及到使用Windows Subsystem for Linux (WSL) 2或在Windows上运行的Linux虚拟机。以下是安装和使用Podman的大致步骤:

  1. 确保你的Windows系统支持并启用了WSL 2。

  2. 从Microsoft Store安装适用于Linux的Windows子系统(如果需要)。

  3. 启用虚拟机功能并在BIOS中禁用安全启动(如果需要)。

  4. 从Microsoft Store安装一个Linux发行版(例如Ubuntu)。

  5. 在WSL 2 Linux发行版中安装Podman。

  6. 设置SSH以允许从Windows到WSL 2 Linux发行版的连接。

  7. 使用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