跳到主要内容

Podman 的 macOS 和 Windows 远程客户端

注意

在 Windows 上运行 Podman 时,请参考 Podman for Windows 指南,该指南使用推荐的 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 安装程序。Windows 安装程序是在每个 Podman 发布时构建的,可从其发布说明页面下载。Windows 安装程序文件名为 podman-#.#.#-setup.exe,其中 # 符号代表 Podman 的版本号。

将安装程序下载到 Windows 主机后,只需双击安装程序,即可安装 Podman。路径也设置为将 podman 放入默认用户路径中。

必须使用 Windows 命令提示符 (cmd.exe) 或 PowerShell (pwsh.exe) 应用程序在命令提示符下运行 Podman。

macOS

Mac 客户端可通过 Homebrew 获取。你可以按照其网站上的说明下载 Homebrew。使用以下命令安装 podman:

brew install podman

创建第一个连接

在服务器上启用 Podman 服务

在执行任何 Podman 客户端命令之前,你必须在 Linux 服务器上启用 podman.sock SystemD 服务。在这些示例中,我们将 Podman 作为普通的无特权用户(也称为非 root 用户)来运行。默认情况下,无特权套接字监听在 /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
名称 身份 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