
注意:在 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似乎在本地运行。
安装 Windows Podman 客户端需先下载 Podman Windows 安装程序。该安装程序随每次 Podman 版本发布同步构建,可从其版本说明页面下载。Windows 安装程序文件名为 podman-#.#.#-setup.exe,其中 # 符号代表 Podman 的版本号。
将安装程序下载至 Windows 主机后,双击即可完成安装。安装路径默认设置为将 podman 添加至用户默认路径。
运行 Podman 时必须通过命令提示符操作,可使用 Windows 命令提示符 (cmd.exe) 或 PowerShell (pwsh.exe) 应用程序。
Mac客户端可通过Homebrew获取。您可参照其官网说明下载Homebrew。使用以下命令安装podman:
$ brew install 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
若要使客户端能够与服务器通信,您需要在Linux机器上启用并启动SSH守护进程(如果当前尚未启用)。
sudo systemctl enable --now sshd
远程 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