用于通过 pasta 改善网络体验的 Podman 5.3 更改

主要观点:

  • 从 Podman 5.0 起默认使用“pasta”为无根网络应用提供网络连接,与之前的默认 slirp4netns 工作方式不同,pasta 默认不使用网络地址转换(NAT),会将主机地址复制到容器中,导致主机和容器使用相同 IP 地址,易引起混淆。
  • Podman 长期提供“host.containers.internal”主机条目让容器访问主机,但很多情况下主机只有一个 IP 地址,导致该条目无法添加。
  • 从 Podman 5.3 起默认使用“--map-guest-addr <ip>”选项,将 169.254.1.2 映射到主机 IP,也可选择其他 IP 并添加到 pasta 命令行,同时确保“host.containers.internal”条目使用该 IP ,且使用该选项需安装 2024_08_14 或更新版本的 Podman。
  • 无根 systemd 单元从 quadlet 创建后在启动时失败,因为 pasta 需要网络完全启动后才能启动,而生成的 systemd 单元使用“After=network-online.target”但系统用户会话无法看到该单元,导致容器单元启动过早,网络未准备好而随机失败,Podman 5.3 实现了一个解决方法,打包者需在用户目录中提供新的“podman-user-wait-network-online.service”单元,quadlet 不再添加“After=network-online.target”,而是添加“After=podman-user-wait-network-online.service”以保证网络准备好后启动。若不需要等待网络准备好,可在 quadlet 文件的“[Quadlet]”部分使用“DefaultDependencies=false”选项。

关键信息:

  • Podman 5.0 默认网络应用为 pasta,与 slirp4netns 工作方式不同。
  • Podman 长期提供“host.containers.internal”条目及相关问题。
  • Podman 5.3 起默认使用“--map-guest-addr”选项及相关设置。
  • quadlet 根less 容器启动时的常见问题及解决方法。

重要细节:

  • pasta 默认不进行 NAT,会复制主机地址到容器。
  • 主机只有一个 IP 地址时“host.containers.internal”条目无法添加。
  • Podman 5.3 新的解决方法及相关单元设置。
  • 使用“--map-guest-addr”需安装特定版本的 Podman。
  • quadlet 中可使用“DefaultDependencies=false”选项控制是否等待网络准备好。
阅读 202
0 条评论