跳转到主内容

48 篇标记为 "podman-desktop" 的帖子

查看所有标签

简化 RHEL 10 上的容器和 AI 开发

·阅读时间 6 分钟
Shipra Singh
技术文档工程师

在不断发展的容器化和 AI 世界中,开发人员需要能够无缝集成到日常工作流程中的工具。Podman 及其图形工具 Podman Desktop 已成为在不同平台(包括 Red Hat Enterprise Linux (RHEL) 10)上构建应用程序的有前景的工具。

Podman:基础

Podman 提供了一种与容器和 Kubernetes 交互的有效方式。它快速、轻量,并采用无守护进程架构运行。Podman 支持无根容器,允许您在不损害功能的情况下限制权限。开发人员可以拉取、构建和推送镜像,运行和调试容器,并高效地使用 Kubernetes。Podman 与 systemd 顺利集成,提供基本的容器编排功能,例如 Pod 管理和 Quadlet systemd 生成。

Podman Desktop:RHEL 开发人员的关键组件

Podman Desktop 通过提供用户友好的界面,简化了容器和 Kubernetes 管理,显著增强了 Podman 体验。它为构建、运行和管理容器和 Pod 提供了流畅的体验。它还提供强大的 Kubernetes 集成,使您能够使用 Kind 和 Minikube 等工具创建本地集群。Podman Desktop 通过解决复杂性、技能差距以及本地和生产部署之间不一致等挑战,简化了本地开发环境。它提供了一个简单的入门过程,指导开发人员从单个应用程序过渡到容器、Pod,最后过渡到 Kubernetes。

Podman Desktop 提供 Docker 兼容性功能,支持 Dockerfile 和 Compose,从而最大限度地减少了配置更改的需要。它允许从 Docker 轻松迁移到 Podman,甚至允许您运行 Podman 解释的 docker 命令。Podman 包含在 RHEL 订阅中。当您从 RHEL 扩展存储库安装 Podman Desktop 时,Podman Desktop 会检测 Podman 并运行它,以在这两个工具之间提供简化的集成。对于在 RHEL 上构建应用程序的开发人员,此集成在以下方面具有优势:

  • 标准化的容器环境:使用一套一致的工具和实践,简化生产环境中容器的管理和部署。
  • 跨平台一致性:在 Windows、macOS 和 RHEL 上享受熟悉的体验。
  • 支持多种 RHEL 扩展:Podman Desktop 中提供了多种扩展,通过关键功能增强 RHEL 开发者的工作流程。
    • 可启动容器:为裸机、AWS 和其他环境创建可启动容器镜像。有关更多详细信息,请参阅此学习路径
    • RHEL 虚拟机:在 macOS 或 Windows 环境中轻松运行和管理 RHEL 虚拟机。
    • RHEL Lightspeed:一个 AI 助手,可简化 Linux 管理。它支持使用自然语言与 RHEL 交互,并提供故障排除和调优建议。
    • Red Hat 身份验证:简化 Red Hat 身份验证,访问 Red Hat 容器注册表,并注册 Linux 虚拟机,通常通过免费的 Red Hat 开发人员订阅。

Podman AI Lab:简化 RHEL 上的 AI 开发人员工作流程

Podman AI Lab 扩展对于在 RHEL 生态系统中工作的 AI 开发人员很有帮助。它使您能够在本地运行大型语言模型 (LLM),从而简化 AI 应用程序在您机器上的直接开发和调试。这种方法具有多项优势,包括数据隐私、成本控制以及在本地环境中测试和调试应用程序的能力。该扩展通过提供以下功能简化了 AI 应用程序开发工作流程:

  • 一个精选的开源模型目录,可供下载。
  • 一个用于实验模型和自定义提示的 Playground 环境。
  • 一个包含示例 AI 用例的配方目录。
  • 从您的本地环境与 LlamaStack 集成,运行容器化分发,并访问 LlamaStack API。
  • 适用于各种语言和框架的代码片段,简化了将 AI 融入您的应用程序的过程。
  • 一个推理服务器,用于通过与 OpenAI 兼容的 API 在本地提供模型服务。

这使开发人员能够轻松开始使用生成式 AI,并将模型集成到他们的应用程序中。

在 RHEL 10 上的可用性和安装

通过 RHEL 扩展存储库通道提供的 Podman Desktop,您可以轻松下载和使用它。此存储库是现代开发人员工具、开源库和专用实用程序的精选集合,可确保可靠、最新且经过 Red Hat 签名的软件。要进行安装,您需要一台已使用您的帐户详细信息激活密钥注册到订阅管理器中的 RHEL 10 机器。

安装和验证过程包括:

  1. 打开一个终端,并启用 RHEL 扩展仓库

    $ sudo subscription-manager repos --enable rhel-10-for-$(arch)-extensions-rpms
  2. 在提示时输入您的密码。

  3. 安装 Podman Desktop

    $ sudo dnf install podman-desktop
  4. 输入 `y` 确认安装大小。

  5. 输入 y 以导入 GPG 密钥并完成安装。

  6. 在主屏幕顶部的搜索框中输入 Podman Desktop,然后单击该应用程序以打开它。

  7. 按照提示完成应用程序的快速入门过程。RHEL 10 上 Podman Desktop 的屏幕截图

  8. 运行基本任务,例如

关于支持的重要说明

Podman Desktop 是一个开源社区项目。虽然 Podman 本身在 RHEL 上有支持选项,但 Podman Desktop 对 Red Hat 客户的支持模式属于协作社区支持。这意味着它旨在提供非生产支持,并且仅提供社区贡献的优势,但没有或有限的服务级别协议 (SLA)。符合条件的客户可以使用此级别的支持来提出非生产查询并针对更复杂的问题打开工单。

参与进来:您的反馈至关重要!

Podman Desktop 是一个不断发展的项目,您的反馈对于其持续开发和改进至关重要。我们鼓励您:

  • 提供反馈:分享您的经验和建议,以塑造项目的未来。使用任务栏中的“分享您的反馈”图标来快速提供反馈。
  • 创建问题:如果您遇到错误或有功能请求,请在 GitHub 仓库上创建一个问题。
  • 加入社区:与开发人员和维护人员互动,提问并分享您的知识。您可以在 GitHub 上找到我们,并为社区讨论做出贡献。

欲了解更多信息,请访问PodmanPodman Desktop。深入探索,帮助我们继续为 RHEL 10 上的容器和 AI 开发构建强大且用户友好的体验!

Podman Desktop 1.21 发布

·阅读时间 36 分钟
Philippe Martin
首席软件工程师

Podman Desktop 1.21 发布啦!🎉

podman-desktop-hero-1.21

Podman Desktop 1.21 现已推出。 点击此处下载

此版本带来了令人兴奋的新功能和改进:

  • 更新的仪表盘通知设计:使通知与最新的扩展设计保持一致 (#13106)
  • 检测到多个 Podman 安装时发出通知:为重复的 Podman 安装添加了警告 (#12011)
  • 将 Podman 更新至 v5.6:将 Podman 更新至 5.6 版本以增强功能 (#13427)
  • 创建 Podman 机器时将 libkrun 设为默认值:在 macOS 上将默认提供程序从 AppleHV 更改为 libkrun (#11453)

发布详情 🔍

✨ 增强功能

更新了仪表盘通知设计

仪表板通知现在遵循最新扩展(例如 AI Lab)的相同设计。此增强功能通过实施更新的通知设计来确保用户界面的一致性。该更改解决了仪表板通知与较新扩展通知之间的视觉不一致问题,提供了更具凝聚力和精美度的用户体验。

Updated dashboard notification designUpdated dashboard notification design

检测到多个 Podman 安装时通知

添加了一个通知系统,用于检测并警告用户何时有多个 Podman 安装(例如,一个通过网站下载安装,另一个通过 Homebrew 安装)。此增强功能解决了重复安装可能导致意外行为的问题,例如即使运行 brew update 后 UI 仍显示过时的版本信息。该通知会告知用户重复安装情况,允许他们卸载其中一个版本以解决潜在冲突。

Updated dashboard notification designUpdated dashboard notification design

将 Podman 更新至 v5.6.0

Podman 引擎已更新到 2025 年 8 月 15 日发布的 5.6.0 版本。此更新确保 Podman Desktop 用户可以访问 Podman 项目的最新功能、改进和错误修复。该升级保持兼容性,并为容器管理和编排任务提供增强功能。

有关 Podman 发布的更多信息,请参阅Podman 5.6 发布Podman 5.6 发布:Rosetta 状态更新博客文章。

创建 Podman 机器时将 libkrun 设为默认值

在 macOS 上创建新的 Podman 机器时,将默认提供程序从 AppleHV 更改为 libkrun。此增强功能确保默认提供程序与 CLI 配置同步,特别是对于首次用户或没有现有机器的情况。该更改解决了用户在切换到 AI 模型支持时需要重新创建机器的问题,提供了更无缝的体验。

🐞 错误修复

UI/UX 问题

  • 无法编辑路径/文件夹的任何输入值:修复了首选项和文件选择对话框中的输入字段编辑问题 (#13603)
  • 无法保存或更改任何首选项输入值:解决了首选项输入字段的保存问题 (#13601)
  • 缩小和展开 Pod 时 UI 布局会中断:修复了 Pod 展开/折叠的 CSS 响应性问题 (#13287)
  • 从 v19 升级到 v20 会导致快捷方式错误:解决了 Windows 升级路径问题和快捷方式问题 (#13214)
  • 网站:Podman Desktop 在某些响应式尺寸下会被裁剪:修复了响应式网站布局上的徽标裁剪问题 (#13510)
  • 提示框行为未按预期处理机密:修复了扩展 API 中的密码输入模糊化问题 (#13476)
  • 从仪表板通知设置 Podman 后,通知仍然处于活动状态:修复了设置完成后持久存在的通知 (#12877)
  • 在所有内置扩展激活之前,不会渲染初始入门磁贴:修复了仪表板磁贴渲染依赖性问题 (#13047)
  • 已取消任务的日志会一直持续下去:修复了已取消的虚拟机/集群创建任务的持续日志记录问题 (#12430)

容器和 Pod 管理

  • bug(ContainerList): 列环境应在引擎名称上进行比较:修复了容器列表环境列比较逻辑 (#13556)
  • bug(ContainerList): 容器组没有设置环境:修复了 Pod 和 Compose 组缺少环境信息的问题 (#13553)
  • Pod 可能会在 Pod 页面上多次列出:修复了重复的 Pod 列表和 Svelte key 错误 (#13048)

扩展问题

  • 修复 podman 扩展监控循环,避免停用时无限循环:修复了扩展停用循环问题 (#13149)
  • 无法在 macOS 上构建带有 X-Registry-Config 头错误镜像:修复了无效注册表配置的镜像构建问题 (#13061)
  • 使用默认值创建 Kind 集群时,应动态检测 http 端口:修复了 Kind 集群创建的端口冲突检测问题 (#12405)
  • 卸载后特定 CLI 工具的更新按钮未移除:修复了 CLI 工具更新按钮在移除后仍然存在的问题 (#13128)


社区致谢

🎉 我们要向所有帮助 Podman Desktop 变得更好的朋友们表示衷心的感谢。在此次发布中,我们收到了以下人员的拉取请求:


最后说明

此版本中修复的完整问题列表可在此处查看。

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。

详细发布变更日志

功能 💡

修复 🔨

chore ✅

重构 🛠️

测试 🚦

文档 📖

Podman Desktop 1.20 发布

·22 分钟阅读
Vladyslav Zhukovskyi
高级软件工程师

Podman Desktop 1.20 发布! 🎉

podman-desktop-hero-1.20

Podman Desktop 1.20 现已可用。 点击此处下载

此版本带来了令人兴奋的新功能和改进:

  • 批量启动所有容器:新增的批量运行按钮允许您一次性启动多个选定的容器,从而在启动容器堆栈时节省时间。
  • 切换用户和集群:在 Podman Desktop 内部无缝切换活动的 Kubernetes 集群和用户上下文,使多集群工作流变得更加容易。
  • 在扩展列表中按描述搜索:不仅可以通过名称搜索,还可以通过描述中的关键字来更快地找到扩展。
  • 从资源页面更新提供程序:直接从资源页面轻松更新您的容器引擎或 Kubernetes 提供程序,以实现更简化的升级过程。
  • 本地扩展开发模式:生产二进制文件现在允许您在启用开发模式后加载并实时测试本地扩展,无需在开发/监视模式下运行 Podman Desktop。
  • 即时停止实时容器日志:现在您可以在不关闭日志窗口的情况下停止容器的实时日志流。这让您对资源使用和调试工作流有更多控制。
  • 新的社区页面网站:我们网站上新增的社区页面可帮助您与其他用户联系、查找资源并参与 Podman Desktop 的开发。

发布详情 🔍

批量启动所有容器

如果您有多个容器要运行,您不再需要单独启动每个容器。Podman Desktop 现在在“容器”视图上提供了一个“全部运行”按钮,只需单击一下即可启动所有选定的容器。这使得一次启动多个服务或整个应用程序堆栈变得更加方便。已运行的容器会被智能跳过,因此批量启动操作只专注于启动已停止的容器。

Containers List pageContainers List page

切换用户和集群

Podman Desktop 的 Kubernetes 集成现在支持在不同集群和用户帐户之间轻松切换上下文。您可以直接通过应用程序 UI 更改活动的 Kubernetes 集群和用户,而无需编辑配置文件或使用外部 CLI 命令。这对于使用多个环境的开发人员尤其有用——例如,从开发集群切换到生产集群(或使用不同的用户凭据)现在只需点击几下即可。它通过允许您在 Podman Desktop 内部无缝切换上下文来简化多集群工作流程。

Edit Kubernetes Context pageEdit Kubernetes Context page

按描述搜索扩展

扩展市场搜索功能已改进,可帮助您更轻松地发现工具。以前,搜索扩展仅匹配扩展名称。在 Podman Desktop 1.20 中,搜索栏还会查看扩展描述。这意味着您可以输入与扩展功能或主题相关的关键字,即使该关键字不在扩展名称中,相关扩展也会出现。现在,根据扩展的功能而不是名称查找扩展变得更加容易。

Extensions pageExtensions page

从资源页面更新提供程序

管理您的容器和 Kubernetes 提供程序变得更加容易。Podman Desktop 中的“资源”页面(列出您的容器引擎和 Kubernetes 环境)现在允许直接更新这些提供程序。如果提供程序(例如 Podman、Docker 或 Kubernetes VM)有新版本可用,您可以直接从 Podman Desktop 的界面触发升级。无需手动运行更新命令或离开应用程序;快速点击即可使您的开发环境与最新版本保持同步。

Resources pageResources page

本地扩展开发模式

扩展作者现在可以在“首选项”中切换“开发模式”,并从新的“本地扩展”选项卡添加本地文件夹。Podman Desktop 将监视该文件夹,加载扩展,并在重启后保持跟踪,与生产环境中的行为完全相同。您可以直接从 UI 启动、停止或取消跟踪扩展,从而缩短构建和调试附加组件的反馈循环,而无需额外的 CLI 标志或特殊的开发版本。

Resources pageResources page

即时停止实时容器日志

容器日志查看器现在可以中途取消,允许您在不再需要时停止跟踪日志。以前,一旦容器的日志被打开,输出将持续流式传输,直到日志窗口关闭。通过此更新,可以通过取消操作中断正在进行的日志流,而无需关闭日志窗格,从而使您对日志监控拥有更多控制权。此改进有助于避免冗余日志输出和不必要的资源使用,因为它允许按需停止日志流。

新社区页面

我们已经在 Podman Desktop 网站上推出了新的“社区”页面,以更好地连接我们的用户和贡献者。此页面作为所有社区相关资源的中心枢纽:您可以找到加入我们的 Discord 频道、参与 GitHub 讨论、在社交平台关注我们等的链接。它还重点介绍了贡献项目的方式,无论是通过报告问题、编写代码还是改进文档。无论您是想分享反馈、结识其他 Podman Desktop 爱好者,还是参与开发,社区页面都是您的起点。


社区致谢

🎉 我们要向所有帮助 Podman Desktop 变得更好的朋友们表示衷心的感谢。在此次发布中,我们收到了以下人员的拉取请求:


最后说明

此版本中修复的完整问题列表可在此处找到,并在此处找到

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。

详细发布变更日志

功能 💡

  • feat: 为消息框添加下拉选项,由 @gastoner 贡献 #13049
  • feat(table): 添加 key 属性,由 @axel7083 贡献 #12994
  • feat(table): 为折叠按钮添加可访问性标签,由 @axel7083 贡献 #12979
  • feat: 为开发中的扩展添加徽章,由 @benoitf 贡献 #12951
  • feat: 新的社区页面网站,由 @cdrage 贡献 #12748
  • feat: 允许从资源页面更新提供程序,由 @SoniaSandler 贡献 #12729
  • feat(extension-api): 拉取镜像支持取消令牌,由 @axel7083 贡献 #12706
  • feat(ui): 创建通用图标,由 @gastoner 贡献 #12677
  • feat: 添加按钮以批量启动所有容器,由 @MarsKubeX 贡献 #12646
  • feat: 支持 EventStore 的细粒度窗口事件,由 @feloy 贡献 #12636
  • feat: 使 window.logsContainer 可取消,由 @feloy 贡献 #12624
  • feat(extension): 在扩展列表中按描述搜索,由 @omertuc 贡献 #12519
  • feat: 添加切换用户和集群功能,由 @gastoner 贡献 #12445
  • feat: 允许使用生产二进制文件开发扩展,由 @benoitf 贡献 #10731

修复 🔨

  • fix: Pod 名称在 k8s 中不工作,由 @eqqe 贡献 #13066
  • fix: 不搜索完整路径可执行文件,由 @feloy 贡献 #13060
  • fix: 当没有正在运行的容器引擎时不显示表格,由 @SoniaSandler 贡献 #13051
  • fix: 增加等待 kubeconfig 创建的超时时间,由 @feloy 贡献 #13050
  • fix(ContainerList): 同名容器组应有独立的组,由 @axel7083 贡献 #13002
  • fix: 更改 podman machine 流关闭函数上下文,由 @SoniaSandler 贡献 #12982
  • fix: 使容器或 vm 连接终端在启动和重启时响应,由 @SoniaSandler 贡献 #12981
  • fix: 迁移到 vitest v 3.2.x 后的测试错误,由 @dgolovin 贡献 #12965
  • fix: 添加更好的检查以在开发模式下检测 Podman Desktop 扩展,由 @benoitf 贡献 #12954
  • fix: 更新 compose 入门指南中的 docker 兼容性链接,由 @SoniaSandler 贡献 #12923
  • fix(patch): 修补 kubernetes/client-node 包,由 @gastoner 贡献 #12919
  • fix(frontend): 按 groupId 对容器进行分组,由 @axel7083 贡献 #12915
  • fix: 更改细粒度事件的分隔符,由 @feloy 贡献 #12914
  • fix: 在状态栏中显示 VM 连接,由 @feloy 贡献 #12910
  • fix: 在不再需要时清理 electron-updater 缓存,由 @dgolovin 贡献 #12870
  • fix: 当上下文离线时分发资源计数事件,由 @feloy 贡献 #12834
  • fix(frontend): 容器列表表格显示竞争条件,由 @axel7083 贡献 #12833
  • fix: 避免在修补资源时发送 status 字段,由 @benoitf 贡献 #12810
  • fix: 当 vm 连接注册/注销时刷新提供程序,由 @feloy 贡献 #12805
  • fix: 主页上重复的标题,由 @statickidz 贡献 #12802
  • fix: 将容器连接状态发送给扩展 API 监听器,由 @jeffmaury 贡献 #12794
  • fix: 删除错误放置的归档文件,更新 .gitignore,由 @odockal 贡献 #12793
  • fix: 移除对 d-bus 的完全访问权限并添加缺失的 --talk-name 选项,由 @dgolovin 贡献 #12778
  • fix: BuildImageFromContainerfile.spec.ts 中的不稳定测试,由 @dgolovin 贡献 #12777
  • fix: 日志文件名扩展名未定义,由 @jiridostal 贡献 #12774
  • fix: macOS 启动时最小化 plist,由 @cblecker 贡献 #12768
  • fix: 扩展安装期间的错误与其他组件重叠,由 @jiridostal 贡献 #12741
  • fix: 组件属性中的错误文本导致发送错误的遥测数据,由 @MarsKubeX 贡献 #12737
  • fix: 更新可用模态框中的错误边距,由 @MarsKubeX 贡献 #12728
  • fix: 保存的输出恢复后终端提示符重复,由 @dgolovin 贡献 #12725
  • fix: 当一个 informer 离线时清除所有资源的缓存,由 @feloy 贡献 #12714
  • fix: 细粒度的 configuration-changed,由 @feloy 贡献 #12700
  • fix: ContainerListCompose.spec.ts 中的未捕获异常,由 @dgolovin 贡献 #12681
  • fix: ContainerList.spec.ts 中的未捕获异常,由 @dgolovin 贡献 #12680
  • fix: 更新静态图片链接,由 @SoniaSandler 贡献 #12651
  • fix: 解决通过入门指南安装的 kubectl 的卸载版本错误,由 @bmahabirbu 贡献 #12426
  • fix: 使镜像构建可取消,由 @dgolovin 贡献 #12261
  • fix(ci): 提前执行 ubuntu 包的更新 (backport #13177),由 @mergify[bot] 贡献,详见 #13181
  • revert: 12870 (backport #13152),由 @mergify[bot] 贡献,详见 #13180

chore ✅

  • chore: 使用聚合方式报告 activateExtension 事件,由 @benoitf 贡献 #13071
  • chore: 使用新的聚合方法跟踪 createProviders,由 @benoitf 贡献 #13064
  • chore: 为遥测添加聚合方法,由 @benoitf 贡献 #13063
  • chore: 引入 inversify 绑定,由 @benoitf 贡献 #13062
  • chore(tray): 更新现有的托盘图标,由 @vancura 贡献 #13057
  • chore: 为 inversify 的 DI 添加装饰器/注解,由 @benoitf 贡献 #13043
  • chore: 将 storybook 更新到 v9,由 @benoitf 贡献 #13037
  • chore: 修改社区会议录像链接,由 @rujutashinde 贡献 #12997
  • chore(deps-dev): 切换到 prettier 3.6.2,由 @jeffmaury 贡献 #12995
  • chore: 将 disposable group 移动到 API 包,由 @benoitf 贡献 #12992
  • chore: 引入 inversify 库,由 @benoitf 贡献 #12978
  • chore: 在 containerList.spec.ts 中将 mockclear 移动到 beforeeach,由 @MarsKubeX 贡献 #12963
  • chore: 将 podman 更新到 v5.5.2,由 @benoitf 贡献 #12960
  • chore: 修复拼写错误,由 @benoitf 贡献 #12955
  • chore: 允许在开发模式下无错误地移除扩展,由 @benoitf 贡献 #12953
  • chore: 为 devMode 添加颜色,由 @benoitf 贡献 #12942
  • chore: 在 nsis 中设置 oneClick 为 false 和 perMachine 为 false,由 @cdrage 贡献 #12941
  • chore: 在扩展元数据中添加 devMode,由 @benoitf 贡献 #12940
  • chore(podman): 移除 `node:fs` 函数的 promisify 用法,由 @axel7083 贡献 #12906
  • chore: 移除 svelte 检查警告,由 @MarsKubeX 贡献 #12892
  • chore(core): 移除不必要的 dns 配置,由 @axel7083 贡献 #12891
  • chore: 升级 biomejs 到 v2,由 @benoitf 贡献 #12885
  • chore: 当扩展 id 从扩展加载器加载/移除时通知开发文件夹实例,由 @benoitf 贡献 #12875
  • chore: 停止发送 kubernetesExecIntoContainer 事件,由 @MarsKubeX 贡献 #12873
  • chore: 从扩展加载器中暴露一个方法:ensureExtensionIsEnabled,由 @benoitf 贡献 #12871
  • chore(website): 修改暗黑模式下链接的页脚颜色,由 @rujutashinde 贡献 #12860
  • chore: 修复 .github 问题模板以添加项目 id,由 @rujutashinde 贡献 #12859
  • chore(issue-template): 在 bug_report.yml 中添加 1.19.2,由 @axel7083 贡献 #12844
  • chore: addProviderMenuItem - 如果提供程序不存在则添加,由 @cdrage 贡献 #12841
  • chore: 移除从 YAML 创建 k8s 的易出错元数据,由 @bmahabirbu 贡献 #12837
  • chore: 正确类型保护 micromark 监听器的 e.target,由 @cdrage 贡献 #12818
  • chore: 修改 github 问题模板以添加项目,由 @rujutashinde 贡献 #12796
  • chore(e2e): 根据操作系统更改压力测试中预期的 img 数量,由 @danivilla9 贡献 #12789
  • chore: 将 podman 更新到 v5.5.1,由 @benoitf 贡献 #12762
  • chore: 跟踪扩展的所有更改,由 @benoitf 贡献 #12743
  • chore: 从 electron builder 配置中移除 notarize 选项,由 @odockal 贡献 #12719
  • chore(e2e): 将 scrollintoviewifneeded 添加到 ui-stress-test,由 @danivilla9 贡献 #12689
  • chore(e2e): 重构 extension-installation-smoke 测试用例,由 @danivilla9 贡献 #12665
  • chore: 更新社交网络链接,由 @vancura 贡献 #12662
  • chore: 将 svelte 升级到 5.28.3,由 @feloy 贡献 #12650
  • chore(workflows): 为 publish-website-pr-cloudflare.yaml 设置权限,由 @axel7083 贡献 #12631
  • chore(workflows): 为 e2e-main.yaml 设置权限,由 @axel7083 贡献 #12630
  • chore(workflows): 为 e2e-kubernetes-main.yaml 设置权限,由 @axel7083 贡献 #12629
  • chore(workflows): 为 downloads-count.yaml 设置权限,由 @axel7083 贡献 #12625
  • chore: 在发布工作流中添加生成 sbom 的作业,由 @SoniaSandler 贡献 #12603
  • chore: 更新 Flatpak 横幅,由 @Eonfge 贡献 #12594
  • chore: 仅在我们开始监视后发送监视事件,由 @benoitf 贡献 #12590
  • chore: 在表格组件中添加对比度更高的边框,由 @SoniaSandler 贡献 #12583
  • chore: 使首选项中的文件项可清除,由 @SoniaSandler 贡献 #12473
  • chore(deps): 将 electron-builder 升级到 v26,由 @axel7083 贡献 #12351
  • chore: 从对话框中移除 no-explicit-any,由 @cdrage 贡献 #11480

重构 🛠️

  • refactor(mock): 简化在 mock 对象上调用方法的方式,由 @benoitf 贡献 #13072
  • refactor: 将消息框接口移动到 api 包,由 @benoitf 贡献 #13007
  • refactor: 将状态栏 api 提取到 api 包,由 @benoitf 贡献 #13006
  • refactor: 将菜单 api 移动到 API 包,由 @benoitf 贡献 #13005
  • refactor: 将配置接口移动到 api 包,由 @benoitf 贡献 #12999
  • refactor: 将事件移动到 API 端,由 @benoitf 贡献 #12996
  • refactor(ui/table): 用 reduce 替换 filter#map#flat 链,由 @axel7083 贡献 #12967
  • refactor(podman): 将 podman-install.ts 移动到正确的文件夹,由 @axel7083 贡献 #12936
  • refactor(table): 移除不必要的绑定,由 @axel7083 贡献 #12934
  • refactor(types): 为 Table 添加泛型,由 @axel7083 贡献 #12933
  • refactor(podman): 将 PodmanInfo 提取到专用文件,由 @axel7083 贡献 #12911
  • refactor(core): 将默认协议配置移动到 Main,由 @axel7083 贡献 #12905
  • refactor(podman): 将 MacOSInstaller 提取到专用文件,由 @axel7083 贡献 #12904
  • refactor(podman): 将 `WinInstaller` 提取到专用文件,由 @axel7083 贡献 #12899
  • refactor(frontend): 使 ContainerGroupPartInfoUI 的 id 属性不可为空,由 @axel7083 贡献 #12896
  • refactor(podman): 将 getBundledPodmanVersion 接口提取到文件,由 @axel7083 贡献 #12894
  • refactor(podman): 将 `Installer` 接口提取到专用文件,由 @axel7083 贡献 #12887
  • refactor: 将文件系统树构建移动到后端,由 @feloy 贡献 #12872
  • refactor(podman): 将 BaseInstaller 提取到专用文件,由 @axel7083 贡献 #12811
  • refactor(podman): 将 WinBitCheck 提取到专用文件,由 @axel7083 贡献 #12712
  • refactor(podman): 将 WinVersionCheck 提取到专用文件,由 @axel7083 贡献 #12705
  • refactor(podman): 将 WinMemoryCheck 类提取到专用文件,由 @axel7083 贡献 #12702
  • refactor(podman): 将 WSL2Check 类提取到专用文件,由 @axel7083 贡献 #12699
  • refactor(ui): 在 ui svelte 库中使用新的图标组件,由 @gastoner 贡献 #12678
  • refactor(extension/podman): 提取 WSLVersionCheck,由 @axel7083 贡献 #12664

测试 🚦

  • chore(test): 失败时重置 podman machine,由 @cbr7 贡献 #13034
  • chore(test): 改进 auth-utility playwright 代码库,由 @odockal 贡献 #13022
  • chore(test): 在 e2e 测试中清理挂起的 podman machine,由 @cbr7 贡献 #13019
  • chore(test): 为检查更新测试创建异常,由 @cbr7 贡献 #12993
  • chore(test): cicd 上的导航时间更长,由 @cbr7 贡献 #12991
  • chore(test): 修复断言超时不足的问题,由 @cbr7 贡献 #12977
  • chore(test): 为方法调用添加超时参数,由 @cbr7 贡献 #12966
  • chore(test): 为正确的消息在需要时抛出错误,由 @cbr7 贡献 #12964
  • chore(test): 在失败时获取抛出的错误,由 @cbr7 贡献 #12961
  • chore(test): 在操作前等待页面完全加载,由 @cbr7 贡献 #12938
  • chore(test): 在修剪容器 e2e 测试中提高鲁棒性,由 @cbr7 贡献 #12922
  • chore(test): 仅在需要时在 Kind 集群上安装 ingress 控制器,由 @amisskii 贡献 #12839
  • chore(test): 增加 cicd 的超时时间,由 @cbr7 贡献 #12787
  • fix(tests): 修复 KubernetesTerminal 不稳定测试,由 @dgolovin 贡献 #12780
  • fix(tests): 不稳定的 Typeahead.spec.ts,由 @dgolovin 贡献 #12779
  • chore(test): 移除 race promise,由 @cbr7 贡献 #12752
  • chore(test): 共享 e2e 测试认证功能,由 @odockal 贡献 #12704
  • chore(test): 为外部 e2e 测试使用已安装的 electron 二进制文件,由 @odockal 贡献 #12688
  • chore(test): 添加 openshift docker e2e 测试,由 @cbr7 贡献 #12676
  • chore(test): 在 Windows CI 上稳定 Kubernetes e2e 测试,由 @amisskii 贡献 #12554
  • test(e2e): 将镜像推送到 kubernetes 集群并用 pod 重用它,由 @danivilla9 贡献 #12427
  • chore(test): 添加状态栏提供程序测试,由 @xbabalov 贡献 #12352

文档 📖

  • docs: 更新在受限环境中安装的步骤…,由 @shipsing 贡献 #12949
  • docs: 根据最新更改更新了程序步骤,由 @shipsing 贡献 #12907
  • docs: 删除了一个不再按预期工作的博客,由 @shipsing 贡献 #12855
  • docs(website): 更新了教程部分,由 @shipsing 贡献 #12763
  • docs(website): 添加了管理 kube 上下文的步骤,由 @shipsing 贡献 #12750
  • docs(website): 修复了格式问题,由 @shipsing 贡献 #12672
  • docs(website): 1.19 版本发布说明,由 @axel7083 贡献 #12602
  • docs(website): 在发现 PD 页面上添加了自定义 UI 的详细信息,由 @shipsing 贡献 #12575
  • docs(website): 添加 podman desktop core 博客,由 @Firewall 贡献 #12497
  • docs: 添加 Podman AI Lab OpenVINO 博客,由 @jeffmaury 贡献 #12496
  • docs(windows): 更新卸载说明,由 @wngtk 贡献 #12349

ci 🔁

  • ci: 为 argos 完全隐藏 github 按钮,由 @cdrage 贡献 #12596

使用 Podman Desktop 进行容器和 Kubernetes 开发

·阅读时间 6 分钟
Matt Demyttenaere
产品经理

在现代软件开发领域,容器和 Kubernetes 不再是可选的;它们是必不可少的。这就是 Podman Desktop 的用武之地,它是您轻松自信地构建、管理和部署容器和 Kubernetes 集群的终极工具。在这篇博文中,我们将介绍一个典型的开发工作流程,创建和构建容器,然后在本地 Kubernetes 集群中对其进行测试。让我们深入了解。

使用 Podman Desktop 构建容器化应用程序

首先,让我们从使用 Podman Desktop 在容器中构建一个应用程序开始。我们需要我们的应用程序代码和一个 Containerfile。对于一个简单的应用程序,你的 Containerfile 可能看起来像这样:

FROM docker.io/nginxinc/nginx-unprivileged

COPY <<EOF /usr/share/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Simple NGINX Container</title>
</head>
<body>
<h1>Hello from my Podman NGINX Container!</h1>
<p>This content is being served by NGINX running in a Podman container.</p>
</body>
</html>
EOF

为了增强安全性,我们使用 `nginx-unprivileged` 镜像。这有助于避免 root 访问,而某些 Kubernetes 分发(如 OpenShift)默认强制执行此操作。默认的 NGINX 镜像使用端口 80,这在无根模式下是被禁止的。

一旦您的应用程序和 Containerfile 准备就绪,Podman Desktop 即可简化构建过程:构建镜像

  1. 导航到“镜像”部分
  2. 选择您的 Containerfile
  3. 为您的镜像提供一个名称(例如 webserver)
  4. 点击“构建”

构建镜像后,您可以立即单击运行它,您的容器将出现在“容器”列表中。

Start container

  1. 在“镜像”列表中找到您的容器
  2. 点击“运行镜像 ▶️”按钮
  3. 给您的容器起个名字,我们称之为:“webserver”

容器管理和日志分析

现在我们的 Web 服务器容器正在运行,我们可以在 UI 中检查它查看容器详细信息

我们可以单击“打开浏览器”按钮在浏览器中查看 Web 服务器:Web 服务器在浏览器中打开

监控容器日志对于调试和理解应用程序行为至关重要。让我们使用 Podman Desktop 查看新创建容器的日志。

  1. 从“容器”列表中选择您正在运行的容器
  2. 点击“日志”选项卡查看容器的日志
  3. 在最新版本的 Podman Desktop 中,您还可以在日志中进行搜索!

View container logs

有了这些,我们可以继续开发过程。当我们更新代码时,我们能够重建我们的容器。最重要的是,我们可以与我们的团队共享我们的 Containerfile,他们将能够重现与我们完全相同的环境来构建和测试他们的代码。

使用 Kubernetes 和 OpenShift

现在我们已经建立并运行了开发环境,是时候为生产环境做准备了。在当今世界,我们自然会转向 Kubernetes。拥有一个本地运行的集群,我们能够快速迭代,但仍然拥有一个尽可能接近生产的环境。这有助于未来更顺利的迁移。Podman Desktop 可以帮助您测试和执行该迁移。

使用 kindminikube,我们可以在几分钟内拥有一个本地运行的 Kubernetes 集群。这将允许我们在 Kubernetes 环境中测试我们的应用程序。Kind 与 Podman Desktop 一起安装,因此您可以立即开始使用。

  1. 首先导航到“Kubernetes”页面
  2. 点击“创建新的 Kind 集群”按钮

Create kind cluster

  1. 点击“创建”
  2. 等待 kind 集群创建完成
  3. 集群创建后,Podman Desktop 会自动将您的 Kubernetes 上下文切换到新的 kind 集群。如果您想更改集群,可以在状态栏中切换上下文。

我们现在有一个本地运行的 Kubernetes 集群,我们可以在 Kubernetes 仪表板上进行探索。

Kubernetes dashboard

这个仪表板不仅为您提供了集群的概览,还提供了对集群中存在的不同 Kubernetes 对象的快速访问。

在本地 Kubernetes 集群上创建 Pod

有了一个正在运行的 Kubernetes 集群,我们现在可以在 Kubernetes 集群中创建我们的 Pod。使用 Podman Desktop,我们可以将之前创建的容器转换为我们 kind 集群中的一个 Pod。

首先,我们必须将我们的镜像推送到我们的 kind 集群。 推送镜像到 kind

现在镜像已经可用,我们可以使用 Podman Desktop UI 将我们的容器部署到 Pod 中部署到 Kubernetes

  1. 导航到“容器”部分
  2. 在 webserver 容器上,点击“部署到 Kubernetes”按钮
  3. 选择您的 kind 集群

从容器到 Kubernetes Manifest 的转换特别有价值,无需手动为简单部署编写 YAML 文件。Podman Desktop 将 `imagePullPolicy: IfNotPresent` 添加到生成的 Kubernetes YAML 中。这确保我们使用刚刚推送到集群的镜像。请务必将此添加到您的 Kubernetes YAML 中,或在您的镜像上使用特定标签以避免默认拉取策略 (`Always`)。

监控 Kubernetes 事件和资源

了解 Kubernetes 集群中发生的事情对于有效开发至关重要。在最新版本的 Podman Desktop 中,您现在可以在 UI 中检查 Kubernetes Pod 的事件。

让我们检查一下我们的 Pod 是否已成功创建并正在运行。

  1. 导航到左侧导航栏中的“Kubernetes”
  2. 点击“Pods”子导航
  3. 点击您刚刚创建的 Pods
  4. 滚动到底部并检查“事件”
  5. 我们可以看到我们的 Pod 已经启动并正在运行

View pod events

我们还可以查看“日志”选项卡以查看正在运行的 Pod 的日志。 查看 pod 日志

视频演示

结论

Podman Desktop 通过提供以下功能,显著简化了容器和 Kubernetes 的开发体验:

  • 一个用于构建和管理容器的统一界面
  • 与 Kubernetes 和 OpenShift 的无缝集成
  • 强大的日志记录和调试工具
  • 连接本地开发和生产 Kubernetes 环境的桥梁

无论您是刚开始使用容器还是管理复杂的 Kubernetes 部署,Podman Desktop 都提供了简化工作流程并提高生产力的工具。作为一个 CNCF 项目,它不断发展以满足云原生社区的需求,使其成为任何开发人员工具包中越来越有价值的工具。

立即试用 Podman Desktop,体验它如何改变您的容器、Kubernetes 和 OpenShift 工作流!

Podman Desktop 1.19 发布

·21 分钟阅读
Axel Stefanini
软件工程师

Podman Desktop 1.19 发布! 🎉

podman-desktop-hero-1.19

Podman Desktop 1.19 现已可用。点击此处下载

此版本带来了令人兴奋的新功能和改进,包括许多扩展更新

  • Podman v5.5:Podman Desktop 附带的 Podman 可执行文件已更新至最新版本。
  • Bootc 扩展 1.9:直接从扩展中测试和实验可引导容器。
  • AI Lab 1.7.2:新的推理运行时、llama-stack 实现和模型上下文协议 (MCP)。
  • Minc 扩展:用于将 MicroShift 部署为容器的 Podman Desktop 扩展。
  • RHEL lightspeed 扩展:用于在使用 RHEL Lightspeed 时获得帮助的扩展。
  • RHEL VMs 扩展:RHEL VMs 扩展帮助用户运行 RHEL 虚拟机。
  • 在 RHEL 10 上可用:Podman Desktop 现在可直接在 RHEL 10 上使用。

发布详情 🔍

Podman v5.5

Podman Desktop 旨在离线工作,因此它与其二进制文件一起提供了 Podman 可执行文件。在此版本中,最新的 Podman 5.5 版本提供了新功能、错误修复和更好的稳定性。

您可以在其发布页面 containers/podman/releases#v5.5.0 上找到 Podman 5.5 的完整变更日志。

信息

虽然此版本中更新了 Podman 二进制文件,但现有的 Podman 机器将保持其创建时的版本。要更新您的 Podman 机器,您必须删除它并初始化一个新的。

Bootc 扩展 🦭

Podman Desktop Boot container 扩展(又名 Bootc)最近有了显著改进;其中之一是使用了 macadam

Macadam 是一个跨平台命令行工具,用于创建和管理虚拟机。它运行在 Windows、macOS 和 Linux 上,并使用每个操作系统的原生虚拟化堆栈:Windows 上的 WSL2、macOS 上的 Apple 虚拟化框架和 Linux 上的 QEMU。Macadam 重用了 Podman 机器代码。

由于 bootc 工具将容器镜像作为更新应用到已经运行的 Linux 系统,允许输出引导包含容器镜像的整个操作系统。要测试 bootc 工件,您需要一个专用机器或从工件创建虚拟机。

为了简化测试工件的开发者体验,Podman Desktop Bootc 扩展为您提供了一种直接从您创建的工件创建虚拟机的方法。

Bootc extension create virtual machineBootc extension create virtual machine

注意

虚拟化存在一个已知问题,可以在 bootc 扩展自述文件中找到。

展示新技术的另一个重要方面是展示其功能。感谢 Charlie DrageTim deBoer,在演示可启动容器方面投入了大量精力,例如内核模块管理、WiFi 模块、systemd 单元文件等。

您可以在 可引导容器 > 示例 页面上找到即用型示例。

Bootc extension examples pageBootc extension examples page

AI Lab ✨

Podman Desktop AI Lab 扩展于 2024 年作为一项实验开始,探索 AI 工作流如何容器化,庆祝了一年多的更新和进展,该扩展已发展到支持各种工具,例如 Instructlab1、llamaCPP2、WhisperCPP3,并在最新版本中支持 OpenVINO、llama-stack 和 MCP。

OpenVINO

随着 OpenVINO4 作为支持的推理运行时引入,您现在可以通过 Podman 在本地运行 OpenVINO 模型5

AI Lab OpenVINO inference providerAI Lab OpenVINO inference provider

llama-stack

Llama Stack 标准化了简化 AI 应用程序开发的核心构建块6

在最新版本的 AI Lab 中,我们引入了对 Llama Stack 的支持,它在容器化环境中运行。在 AI Lab 内部运行的推理服务器将注册到 Llama Server,供其客户端使用。

AI Lab llama-stack pageAI Lab llama-stack page

模型上下文协议 (MCP)

从 LLMs 创建产品已被证明具有挑战性,新兴的协议正在试图提供帮助,例如 MCP。

MCP 是一个开放协议,它标准化了应用程序如何向 LLMs 提供上下文。7

在 AI Lab playground 中支持 MCP 的初步步骤已经开始,使开发人员能够直接通过 GUI 进行实验,然后再尝试将其集成到他们的应用程序中。

AI Lab MCP in playgroundAI Lab MCP in playground

Minc 扩展 📦

MicroShift 是一个优化 OpenShift Kubernetes 以适应小尺寸和边缘计算的项目8。类似于 KindMinikube,已经创建了一个用于通过 Podman 在本地创建和管理 MicroShift 集群的扩展。

您可以在 MicroShift 部分了解更多信息。

提示

对可引导容器和 MicroShift 感兴趣吗?您可以参考题为使用 Podman Desktop 创建 MicroShift 可引导镜像的博客文章。

RHEL Lightspeed ⚡

Red Hat Lightspeed 是一款生成式 AI 助手,集成到 Red Hat 的混合云平台,例如 OpenShift 和 Enterprise Linux。9 它在控制台中提供自然语言指导,以简化复杂任务,提高生产力,并弥合 IT 技能差距。

用户可以从各种 AI 模型中进行选择,包括 OpenAI、Azure OpenAI、WatsonX,或在 Red Hat 平台上部署私有模型。

通过 Red Hat 订阅,您可以从任何地方(包括 Podman Desktop)通过一个名为 RHEL Lightspeed 的新扩展来体验 Red Hat Lightspeed。

您可以通过导航到 扩展 > 目录 页面并单击其 安装 图标来直接安装该扩展。

RHEL lightspeed chatbotRHEL lightspeed chatbot

注意

RHEL VMs 扩展 🗃️

通过 Podman 可执行文件,Podman Desktop 管理虚拟机;负责此功能的跨平台代码已被重用来创建前面提到的 macadam 工具。

RHEL VMs 扩展帮助用户使用 macadam 工具运行 RHEL 虚拟机。

RHEL VM createRHEL VM create

注意

在 macOS 和 Linux 上,您需要手动安装 Macadam 二进制文件。有关更多详细信息,请参阅先决条件

RHEL 10 可用性 🚢

您所喜爱的 Podman Desktop——简化的容器管理和直观的用户界面——现在扩展到 RHEL 工作流程。对于 RHEL 系统上的用户,请探索扩展通道以安装 Podman Desktop。您将在 Windows、Mac 以及现在的 RHEL 上获得熟悉的使用体验。发布时间与其他平台同步,因此您将立即获得新功能。

了解更多关于在 RHEL 10 上安装 Podman Desktop 的详细信息。


社区致谢

🎉 我们要向所有帮助 Podman Desktop 变得更好的朋友们表示衷心的感谢。在此版本中,我们收到了以下人员的拉取请求:


最后说明

此版本中修复的完整问题列表可在此处找到,并在此处找到

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。

详细发布变更日志

修复 🔨

  • 修复(工作流): 发布权限,由 @axel7083 提交 #12585
  • 修复(NumberInput): 增量按钮位置,由 @axel7083 提交 #12578
  • 修复:更改了指向 Docker 兼容性文档的错误链接,由 @MarsKubeX 提交 #12573
  • 修复:从 Page 及相关组件中移除了未使用的 breadcrumbTitle,由 @feloy 提交 #12559
  • 修复:更改了 TestComplexT… 中要导出的 props 接口定义,由 @MarsKubeX 提交 #12547
  • 修复(网站): 更新了 Kubernetes 部分标题的大小,由 @gastoner 提交 #12521
  • 修复(网站): 更新了 Kubernetes 部分图标的大小,由 @gastoner 提交 #12520
  • 修复:为终端输出使用默认颜色,由 @vzhukovs 提交 #12494
  • 修复(网站): 统一了图标的大小,由 @gastoner 提交 #12484
  • 修复:将 Input、NumberInput 和 SearchInput 迁移到 svelte v5,由 @dgolovin 提交 #12475
  • 修复:为 markdown 按钮使用默认内边距,由 @vzhukovs 提交 #12451
  • 修复(container-connection): 当 shell 访问可用时显示终端选项卡,由 @axel7083 提交 #12417
  • 修复(webview-api): 缺失存储库和来源信息,由 @axel7083 提交 #12416
  • 修复:显示虚拟机状态,由 @feloy 提交 #12411
  • 修复:更新了 podman 镜像路径参数,由 @gastoner 提交 #12388
  • 修复(electron-v36): Linux 上的 gtk-version,由 @axel7083 提交 #12360
  • 修复:向 ProviderImages 接口引入 fontId 属性,由 @dgolovin 提交 #12357
  • 修复(electron-updater): 禁用差异化下载,由 @axel7083 提交 #12353
  • 修复(ci): 修正生产环境 e2e 测试中 Podman Desktop 二进制文件的环境变量名称,由 @odockal 提交 #12308
  • 修复:避免构建工具中的 cve,由 @benoitf 提交 #12295
  • 修复(图标): 更新 Props 接口,由 @axel7083 提交 #12232

chore ✅

  • 日常维护: 移除 brew PR 自动化,由 @benoitf 提交 #12563
  • 日常维护: 使用 reset 进行模拟并使用 waitFor 方法,由 @benoitf 提交 #12560
  • 日常维护: 调整网站浅色模式文本颜色使其更深,由 @SoniaSandler 提交 #12550
  • 日常维护: 更新 flathub 作业,由 @benoitf 提交 #12545
  • 日常维护(工作流): 为 release.yaml 设置权限,由 @axel7083 提交 #12532
  • 日常维护(工作流): 为 daily-testing-build.yaml 设置权限,由 @axel7083 提交 #12516
  • 日常维护: 更新主页浅色模式文本颜色使其更深,由 @SoniaSandler 提交 #12503
  • 日常维护: 从主页移除旧版块,由 @SoniaSandler 提交 #12502
  • 日常维护: 将 preview 重命名为 website preview,由 @benoitf 提交 #12482
  • 日常维护: 移除 netlify 部署,现已部署到 cloudflare,由 @benoitf 提交 #12478
  • 日常维护: 发布到 cloudflare 时不发布评论,由 @benoitf 提交 #12477
  • 日常维护: 从索引页移除未使用的导入,由 @SoniaSandler 提交 #12469
  • 日常维护: 在消息框选项中添加了页脚 markdown 描述,由 @gastoner 提交 #12466
  • 日常维护(网站): 在“阅读文档”按钮中添加了指定链接的选项,由 @gastoner 提交 #12464
  • 日常维护: 移除未使用的 tools/* 内容,由 @axel7083 提交 #12456
  • 日常维护(next-build): 定义显式权限,由 @axel7083 提交 #12455
  • 日常维护(pr-check): 定义显式权限,由 @axel7083 提交 #12454
  • 日常维护: 修复 argos 截屏的 github 按钮,由 @cdrage 提交 #12453
  • 日常维护: 发布到 cloudflare (除了 netlify),由 @benoitf 提交 #12433
  • 日常维护: 修复 github 按钮,移除 github 链接,添加间距,由 @cdrage 提交 #12429
  • 日常维护(工作流): 在 next-build.yaml 中更新预发布仓库,由 @axel7083 提交 #12414
  • 日常维护: 更新 jsdom 至 27.0.0-beta.1,由 @benoitf 提交 #12412
  • 日常维护: 更新 podman 至 v5.5,由 @gastoner 提交 #12408
  • 日常维护(npm-registry): 为已发布的包配置来源信息,由 @axel7083 提交 #12398
  • 日常维护(e2e): 修复 kind 测试的跳过问题,由 @danivilla9 提交 #12397
  • 日常维护: 为错误通知指示失败,由 @SoniaSandler 提交 #12389
  • 日常维护: 移除 vale 工具,由 @benoitf 提交 #12386
  • 日常维护: 部署生产站点时不进行压缩,由 @cdrage 提交 #12369
  • 日常维护: 运行网站构建前清除构建和缓存文件夹,由 @cdrage 提交 #12338
  • 日常维护: 修复网站警告 + 未正确构建的问题,由 @cdrage 提交 #12337
  • 日常维护: 除非准备就绪,否则不运行 podman mac 助手检查或套接字检查,由 @cdrage 提交 #12331
  • 日常维护(网站): 更新了 kubernetes 的亮点功能,由 @gastoner 提交 #12305
  • 日常维护(网站): 更新了容器的亮点功能,由 @gastoner 提交 #12304
  • 日常维护(网站): 添加了“阅读文档”按钮,由 @gastoner 提交 #12303
  • 日常维护: 向网站添加常见问题解答(FAQ)部分,由 @SoniaSandler 提交 #12300
  • 日常维护: 重构 kube 配置 secret 列,由 @deboer-tim 提交 #12299
  • 日常维护: 重构 kube deployment 列,由 @deboer-tim 提交 #12298
  • 日常维护: 重构 kube ingress route 列,由 @deboer-tim 提交 #12297
  • 日常维护: 向网站添加用户评价部分,由 @SoniaSandler 提交 #12296
  • 日常维护: 重构 kube pvc 列,由 @deboer-tim 提交 #12294
  • 日常维护: 重构 kube service 列,由 @deboer-tim 提交 #12293
  • 日常维护: 重构 kube nodes 列,由 @deboer-tim 提交 #12292
  • 日常维护(deps-dev): 更新至 jsdom v26.1.0,由 @benoitf 提交 #12291
  • 日常维护: 重构 kube cronjob 列,由 @deboer-tim 提交 #12290
  • 日常维护: 重构 kube job 列,由 @deboer-tim 提交 #12289
  • 日常维护: 在 kube 列中使用 props,由 @deboer-tim 提交 #12288
  • 日常维护: 为 Arm64 生成 linux tgz,由 @benoitf 提交 #12282
  • 日常维护: 向网站添加更多功能部分,由 @SoniaSandler 提交 #12276
  • 日常维护: 更新 docker 第三方工具的描述,由 @bmahabirbu 提交 #12265
  • 日常维护: 为 minc 扩展添加博文,由 @benoitf 提交 #12260
  • 日常维护(网站): 添加了高亮标签,由 @gastoner 提交 #12249
  • 日常维护: 清理 kubernetes 状态列,由 @deboer-tim 提交 #12241
  • 日常维护: 共享 kubernetes 状态列,由 @deboer-tim 提交 #12230
  • 日常维护: 网站 - 更新主页截图,由 @cdrage 提交 #12224
  • 日常维护(vitest): 在 CI 上启用默认报告器,由 @axel7083 提交 #12209
  • 日常维护: 将空屏幕迁移到 svelte 5,由 @deboer-tim 提交 #12194
  • 日常维护: 更新贡献指南以使用 lint-staged,由 @deboer-tim 提交 #12193
  • 日常维护: 为镜像存在时间列使用 duration,由 @deboer-tim 提交 #12177
  • 日常维护: 为卷存在时间使用 duration 列,由 @deboer-tim 提交 #12175
  • 日常维护: 镜像和清单详情导航,由 @deboer-tim 提交 #12170
  • 日常维护: 网站 - 添加自定义 github stars 按钮,由 @cdrage 提交 #12146
  • 日常维护: 网站 - 在首页添加 cncf 社区横幅,由 @cdrage 提交 #12119
  • 日常维护: 更改容器表中存在时间列的命名,由 @gastoner 提交 #12083
  • 日常维护: 将下拉菜单迁移到 svelte 5,由 @cdrage 提交 #12067
  • 日常维护: 将复选框迁移到 svelte 5,由 @bmahabirbu 提交 #12055
  • 日常维护: 如果下拉菜单被选中,则添加选中选项,由 @gastoner 提交 #11991
  • 日常维护: 将 openExternal 命令添加到已注册命令中,由 @gastoner 提交 #11990
  • 日常维护: 向模态组件添加 overflow visible 属性,由 @gastoner 提交 #11988
  • 日常维护: 引入带命令参数的 micromark 按钮图像,由 @gastoner 提交 #11986
  • 日常维护: 移除 lib/container 中的 no-explicit-any,由 @cdrage 提交 #11477

重构 🛠️

  • 重构:将 Page 移植到 svelte5,由 @feloy 提交 #12561
  • 重构:将 NavPage 移植到 svelte5,由 @feloy 提交 #12555
  • 重构(ui): 将 DurationColumn 迁移至 svelte5,由 @axel7083 提交 #12284
  • 重构(ui): 将 SimpleColumn 迁移至 svelte5,由 @axel7083 提交 #12283
  • 重构(StatusIcon): 端口转发用 Component 替换 Snippet,由 @axel7083 提交 #12228
  • 重构:将注册命令移至公共文件,由 @gastoner 提交 #12207

文档 📖

  • 文档(网站): 添加了在 RHEL10 上安装 Podman Desktop 的步骤,由 @shipsing 提交 #12531
  • 文档(网站): 记录使用 minc 创建 microshift 集群的过程,由 @shipsing 提交 #12406
  • 文档(网站): 更新了 AI lab 文档,由 @shipsing 提交 #12384
  • 文档(podman): 添加 Windows 安装说明,由 @axel7083 提交 #12355
  • 文档(ai-lab): 修复索引中的拼写错误,由 @trya2l 提交 #12345
  • 文档(网站): 更新 Kubernetes 部分,由 @shipsing 提交 #12306
  • 文档: 添加 vscode 博客文章,由 @Firewall 提交 #12258
  • 文档(网站): 添加了故障排除部分,由 @shipsing 提交 #12247
  • 文档(网站): 从故障排除部分移除了一个过时的截图,由 @shipsing 提交 #12244
  • 文档: 添加 1.18 版本发布说明,由 @SoniaSandler 提交 #12226
  • 文档(网站): 将 compose 博客移至教程部分,由 @shipsing 提交 #12157
  • 文档(网站): 根据最新情况更新了 docker 兼容性部分,由 @shipsing 提交 #11803

测试 🚦

  • 日常维护(测试): 使用环境变量设置创建 podman machine,由 @cbr7 提交 #12480
  • 日常维护(测试): 参数化 runner 关闭超时,由 @amisskii 提交 #12470
  • 日常维护(测试): 接受降级状态为有效,由 @cbr7 提交 #12407
  • 日常维护(测试): 等待扩展被删除,由 @cbr7 提交 #12396
  • 日常维护(测试): 增加将镜像推送到 kind 集群的超时时间,由 @amisskii 提交 #12394
  • 日常维护(测试): 等待按钮并确保按钮按下,由 @cbr7 提交 #12385
  • 日常维护(测试): 在 linux 上不创建 machine,由 @cbr7 提交 #12342
  • 日常维护(测试): 卷 e2e 测试等待导航完成,由 @cbr7 提交 #12339
  • 日常维护(测试): 修复镜像 e2e 测试套件中的一些不稳定性,由 @cbr7 提交 #12336
  • 日常维护(测试): 在 bug 修复前跳过测试套件,由 @cbr7 提交 #12335
  • 日常维护(测试): 确保在测试套件结束时重启默认的 podman machine,由 @cbr7 提交 #12326
  • 日常维护(测试): 更新错误消息处理,由 @cbr7 提交 #12324
  • 日常维护(测试): 现在在正确的元素上进行断言,由 @cbr7 提交 #12323
  • 日常维护(测试): 在等待前尝试创建并启动 machine,由 @cbr7 提交 #12322
  • 日常维护(测试): 转向轮询断言以获得更好的处理,由 @cbr7 提交 #12320
  • 日常维护(测试): 在故障排除中更新运行提供程序的断言,由 @odockal 提交 #12314
  • 日常维护(测试): 修复一些在其他测试失败时会失败的测试,由 @cbr7 提交 #12313
  • 日常维护(测试): 修复 e2e 测试中的不稳定行为,由 @cbr7 提交 #12310
  • 日常维护(测试): 新的获取扩展版本方法,由 @amisskii 提交 #12248
  • 修复(测试): 不手动渲染 svelte 片段,由 @axel7083 提交 #12208
  • 日常维护(测试): 为所有 machine 类型参数化 rootless 资源 machine 测试,由 @xbabalov 提交 #11954
  • 日常维护(测试): 在镜像详情页面的检查选项卡内容中添加 ARIA 标签,由 @rostalan 提交 #11811

新功能 💡

  • 功能: 添加了上下文复制功能,由 @gastoner 提交 #12463
  • 功能: 为消息框添加了新的页脚 markdown 属性,由 @gastoner 提交 #12432
  • 功能: 添加了上下文编辑功能,由 @gastoner 提交 #12415
  • 功能: 在文档中下载 Linux 二进制文件,由 @DIGIX666 提交 #12286

脚注

  1. https://instructlab.ai/

  2. https://github.com/ggml-org/llama.cpp

  3. https://github.com/ggml-org/whisper.cpp

  4. https://github.com/openvinotoolkit/openvino

  5. https://hugging-face.cn/OpenVINO

  6. https://github.com/meta-llama/llama-stack?tab=readme-ov-file#overview

  7. https://modelcontextprotocol.net.cn/introduction

  8. https://#/en/topics/edge-computing/microshift

  9. Red Hat 宣布 Red Hat OpenShift Lightspeed 全面上市,通过生成式 AI 赋能混合云生产力

在 Podman AI Lab 中启用 OpenVINO 推理

·4 分钟阅读
Jeff Maury
工程经理

Podman AI Lab 简介

Podman AI Lab 是一个开源平台,旨在简化使用容器技术部署、管理和试验 AI 工作负载。它提供了一个用户友好的界面,用于在本地或云端运行、测试和扩展 AI 模型,利用 Podman 容器的强大功能和灵活性。

什么是 OpenVINO?

OpenVINO™ (Open Visual Inference and Neural Network Optimization) 是 Intel 开发的一个开源工具包,用于加速各种硬件(包括 CPU、GPU 和专用加速器)上的 AI 推理。它优化深度学习模型以实现快速、高效的推理,使其成为边缘和云 AI 应用程序的热门选择。

在 Podman AI Lab 中使用 OpenVINO

Podman AI Lab 现在支持 OpenVINO 作为推理提供程序。这意味着您可以:

  • 在启动推理服务器或 playground 时选择一个与 OpenVINO 兼容的模型。
  • 在支持的英特尔设备上享受硬件加速推理带来的好处。
  • 轻松地在不同的推理提供程序(例如,llama-cpp、OpenVINO)之间切换,以进行基准测试和兼容性测试。
警告

此功能仅在基于英特尔的系统上可用,因为 OpenVINO 是为英特尔硬件优化的。如果您使用的是非英特尔系统,您将无法使用 OpenVINO 作为推理提供程序。

如何使用

  1. 启动 Podman AI Lab 并导航到模型部署或 playground 部分。
  2. 在配置您的模型时,选择一个与 OpenVINO 兼容的模型。
  3. 启动推理服务器或 playground。

启动 OpenVINO 推理服务器

  1. 点击导航栏中的 Podman AI Lab 图标。
  2. 在 Podman AI Lab 导航栏中,点击 模型 > 服务 菜单项。
  3. 点击右上角的 新建模型服务 按钮。
  4. 模型 列表中选择一个与 OpenVINO 兼容的模型(例如 OpenVINO/mistral-7B-instruct-v0.2-int4-ov),然后点击 创建服务 按钮。
  5. 该模型的推理服务器正在启动,稍等片刻后,点击 打开服务详情 按钮。

OpenVINO inference server details

使用终端 shell,执行给定的 curl 命令并查看推理结果输出。

使用 OpenVINO 兼容模型启动 Playground

  1. 点击导航栏中的 Podman AI Lab 图标。
  2. 在 Podman AI Lab 导航栏中,点击 模型 > Playgrounds 菜单项。
  3. 点击右上角的 新建 Playground 按钮。
  4. 模型 列表中选择一个与 OpenVINO 兼容的模型(例如 OpenVINO/mistral-7B-instruct-v0.2-int4-ov),然后点击 创建 Playground 按钮。
  5. 该模型的 playground 正在启动,稍等片刻后,将显示一个聊天界面。

Initial playground on OpenVINO model

在提示符中输入“What is OpenVINO ?”,然后点击 发送 按钮。OpenVINO 模型将回复一个答案。

OpenVINO model response in the playground

与 OpenShift AI + OpenVINO 的一致性

在 Podman AI Lab 中使用 OpenVINO 的一个关键优势是,当将工作负载过渡到 OpenShift AI 时,它带来了一致性。这两个平台现在都支持 OpenVINO,确保:

  • 在 Podman AI Lab 中本地测试和优化的模型,在部署到 OpenShift AI 时将表现出相同的行为。
  • 您可以维持从开发到生产的统一工作流,减少意外情况和集成问题。
  • 性能优化和硬件加速在不同环境中得以保留。

结论

通过启用 OpenVINO 作为推理提供程序,Podman AI Lab 赋能用户在本地和云端利用高性能 AI 推理,并在 OpenShift AI 等平台上提供一致的体验。这种集成简化了 AI 开发生命周期,并为部署高效、可扩展的 AI 解决方案开辟了新的可能性。

MINC:加速本地 K8s 开发

·阅读时间 6 分钟
Florent Benoit
首席软件工程师

在本地工作的开发人员通常寻求一种快速的内循环来编码、构建和测试他们的 OCI 镜像和 Kubernetes 应用程序。

例如,在 Kubernetes Pod 中测试新镜像时,该镜像必须通过推送到私有或公共注册表或确保其在 Kubernetes 集群节点上可用。这通常需要额外的命令,例如 `kind load docker-image`、`minikube cache add ` 或将镜像发布到第三方注册表。

在这篇博文中,我们将介绍一个名为 `MINC (MicroShift IN Container)` 的新扩展,它提供了一个运行在现有 Podman Machine 环境中的 MicroShift 集群。

hero

使用 Podman 和 Podman Desktop 增强您在 VS Code 中的容器开发

·5 分钟阅读
Matt Demyttenaere
产品经理

开发容器化应用程序有时会感觉很复杂,但有了合适的工具,它就可以成为一个流畅高效的过程。在这篇博文中,我们将探讨如何利用 Visual Studio Code (VS Code) 与 Podman 和 Podman Desktop 的强大功能来简化您的容器开发工作流程。我们将介绍如何设置和使用两个与 Podman 集成的 VS Code 扩展。

VS Code:您的容器开发 IDE

VS Code 是一款流行且功能多样的代码编辑器,可以通过扩展来增强其功能。对于容器开发,有几个优秀的扩展可以与 Podman 无缝集成。

先决条件

在我们开始之前,请确保您已安装以下软件:

  • Podman:请遵循官方网站上的安装说明。
  • Podman Desktop:官方网站下载并安装 Podman Desktop。
  • Visual Studio Code:官方网站下载并安装 VS Code。

VS Code 扩展

为了将 VS Code 与 Podman 集成,我们有两种扩展可供选择:

  1. Microsoft 的容器工具扩展“容器工具”扩展为容器相关任务提供了出色的支持,包括构建镜像、管理容器以及使用 Containerfile 和 Dockerfile。Microsoft 最近宣布,他们将把 Docker 扩展发展为容器工具扩展,以支持 Podman 等其他工具!
  2. Pod Manager:此扩展由我们社区的一名成员创建,并且完全开源。它旨在帮助您直接从 VS Code 界面管理 Podman 容器、镜像、卷和网络。

虽然您不太可能同时使用这两个扩展,但比较它们将有助于您了解每个扩展的优缺点,最终使其更容易选择最适合您需求的扩展。因此,在这篇博文中,我们将逐一安装它们。

选项 1:Microsoft 的容器工具扩展

要安装此扩展:

  1. 打开 VS Code。
  2. 点击活动栏中的扩展图标(或按 Ctrl+Shift+XCmd+Shift+X)。
  3. 搜索“Container Tools”并安装微软发布的扩展。

为 Podman 配置 VS Code

如果 Docker 未运行,Container Tools 扩展通常会通过查看 `DOCKER_HOST` 环境变量自动检测 Podman。在 Podman Desktop 中,导航到“设置”>“Docker 兼容性”>“第三方工具兼容性”,并确保该选项已启用。在我们的文档中了解有关Docker 兼容性的更多信息。

enabling docker compatibility in the settings

选项 2:Pod Manager

要安装此扩展:

  1. 打开 VS Code。
  2. 点击活动栏中的扩展图标(或按 Ctrl+Shift+XCmd+Shift+X)。
  3. 搜索“Pod Manager”并安装由 dreamcatcher45 发布的扩展。

使用 VS Code 扩展

既然我们已经安装并配置了扩展,让我们看看如何使用它们。

使用 Containerfile 和 Dockerfile

这两个扩展都为 Containerfile 和 Dockerfile 提供语法高亮、代码补全和语法检查功能。在 VS Code 中打开一个 Containerfile,您将立即从这些功能中受益。

您也可以直接从 VS Code 构建镜像:

  1. 在资源管理器视图中右键单击 Containerfile。
  2. 选择“构建镜像”。
  3. VS Code 将提示您输入镜像名称和标签。
  4. 然后,扩展将使用 Podman 构建镜像。
  5. 之后,您将在侧边栏中看到构建好的镜像。

如果您使用命令行来构建镜像,您也会在这里看到它们。

building a Containerfile in vs code using the microsoft extension

管理容器

这些扩展还允许您直接从 VS Code 管理容器。您可以启动、停止、重启和移除容器,以及查看它们的日志和检查它们的配置。

要查看容器日志:

  1. 点击活动栏中的容器图标。
  2. 您将看到您的容器、镜像和网络列表。
  3. 右键单击一个容器以执行操作。

using Container Tools extension to view the logs of the container

同样,使用 Pod Manager 扩展,我们可以直观地检查容器、镜像和卷。

  1. 点击活动栏中的 Pod Manager 图标。
  2. 您将看到您的容器、镜像和网络列表。

using podmanager to view all the running containers, images and volumes

并管理容器的生命周期。

using podmanager to manage the lifecycle of the container

当然,还可以通过可视化界面来解决问题。

using podmanager to enter the container

结论

相比之下,这两个扩展提供了几乎相同的功能集,因此选择哪个 UI 完全取决于您的个人偏好。我个人会坚持使用 Pod Manager,因为它的标志是一只海豹 🦭。请记住,如果您在使用这些工具或 Podman Desktop 时遇到任何问题,请通过发起讨论创建问题告诉我们。

通过结合 VS Code、Podman 和 Podman Desktop 的强大功能,您可以创建 streamlined 且高效的容器开发工作流程。VS Code 扩展与 Podman 提供了出色的集成,允许您直接从代码编辑器管理容器、构建镜像以及使用 Containerfile。我们很高兴看到 Microsoft 正在拥抱 Podman,并将其支持构建到他们的生态系统中。Podman Desktop 通过可视化界面来管理您的容器环境,并将帮助您从开发环境迁移到生产 Kubernetes 环境。拥抱这些工具,提升您的容器开发体验!

Podman Desktop 1.18 发布

·28 分钟阅读
Sonia Sandler
助理软件工程师

Podman Desktop 1.18 版本发布!🎉

podman-desktop-hero-1.18

Podman Desktop 1.18 现已发布!点击此处下载

此版本带来了令人兴奋的新功能和改进:

  • 完善 Docker 兼容性功能:Docker 兼容性页面已退出实验模式,现在即使通过 brew 安装,它也能帮助您完全设置 Podman。它还会检测并通知您 Podman 无法绑定 Docker 套接字的情况。
  • 切换 Kubernetes 命名空间:现在可以在 Podman Desktop 内切换 Kubernetes 命名空间。
  • Kubernetes 中的作业:您现在可以在 Podman Desktop 日益增长的 Kubernetes 部分中看到 Kubernetes 作业。
  • 实验性状态栏提供程序增强:状态栏提供程序可以根据用户偏好进行固定和取消固定,并且提供程序状态图标已更新,更易于理解。

发布详情

Docker 兼容模式页面已退出实验模式 🎉

v1.13 中引入的实验性 Docker 兼容性页面已退出实验模式。现在,所有与 Docker 兼容性相关的内容都可以在一个地方找到。此外,还添加了新的 Docker 兼容性相关通知,以使设置过程更简单,减少遇到问题时的猜测。

Docker Compatibilty podman mac helper notificationDocker Compatibilty podman mac helper notification Docker Compatibilty docker socket notificationDocker Compatibilty docker socket notification

切换 Kubernetes 命名空间

到目前为止,Podman Desktop 只支持切换 Kubernetes 上下文。通过此更新,您现在可以在 Podman Desktop 内部切换命名空间,而无需在应用程序外部进行任何操作。此选择不会修改您的 Kube 配置,并且在整个应用程序中都是持久的,因此如果您在一个地方选择了一个特定命名空间,它将在 Podman Desktop 的其他地方使用。

Kubernetes namespacesKubernetes namespaces

Kubernetes 作业

作为我们持续进行的 Kubernetes 改进和增强工作的一部分,我们为 Kubernetes 作业添加了一个新标签页。您现在可以在一个地方查看所有作业,每个作业都有详情页面,并且可以删除和查看条件状态。

Kubernetes Jobs listKubernetes Jobs list Kubernetes Job detailsKubernetes Job details

实验性状态栏提供程序增强功能

v1.16 中引入的实验性状态栏提供程序进行了一些更改,使其更容易理解和使用。

新的提供程序状态图标包括:

  • 白点 - 运行中
  • 红点 - 错误
  • 向上箭头 - 有可用更新
  • 旋转圆圈 - 正在停止或启动
  • 较暗的图标 - 已停止

此外,您现在可以通过从状态栏固定或取消固定来选择要显示哪些可用的提供程序。

Status bar providersStatus bar providers

如果您对我们的实验性功能(或 Podman Desktop 的任何方面)有任何反馈或想法,请随时在相关的实验性功能 github 讨论中告诉我们,可以通过设置页面中的实验性选项卡或点击 Podman Desktop 右下角的评论图标并填写反馈表单来访问该讨论。

其他更改

重大变更

作为向 svelte 5 迁移的一部分,@podman-desktop/ui-svelte 包 v1.18.0 的 DetailsPageFormPage 组件引入了重大变更。

请在这些组件中使用 {#snippet <snippet-name>()} 代替插槽(slots)。

社区致谢

🎉 我们要向所有帮助 🦭 Podman Desktop 变得更好的朋友们表示衷心的感谢。在此版本中,我们收到了以下新朋友的拉取请求:

  • @j-bs#11456 docs(website): 在操作系统选项卡组中使用一致的顺序中做出了他们的第一次贡献
  • @chkpnt#10975 fix: 处理 macOS 系统代理绕过值中做出了他们的第一次贡献
  • @AlexonOliveiraRH#11710 docs: 添加启用 ip_tables 的说明中做出了他们的第一次贡献
  • @Virakal#11792 fix(docs): docker 导出语法中做出了他们的第一次贡献
  • @fabienengels#12106 docs: 添加 EOST 作为采用者中做出了他们的第一次贡献

最后说明

此版本中修复的完整问题列表可在此处查看

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。

详细发布变更日志

日常维护 ✅

  • 日常维护:更新发布流程,由 @benoitf 提交 #12192
  • 日常维护:向状态栏提供程序添加错误指示,由 @SoniaSandler 提交 #12191
  • 日常维护:为 CLOMonitor 排除一条规则,由 @benoitf 提交 #12169
  • 日常维护:为 CNCF 工具添加徽章,由 @benoitf 提交 #12158
  • 日常维护:添加 scorecard,由 @benoitf 提交 #12147
  • 日常维护:网站 - 更新页脚的 CNCF 标志和间距,由 @cdrage 提交 #12142
  • 日常维护:增加 lint 内存,由 @deboer-tim 提交 #12140
  • 日常维护:添加安全洞察文件,由 @benoitf 提交 #12138
  • 日常维护:网站 - 更新字体粗细和 div 宽度,由 @cdrage 提交 #12117
  • 日常维护:网站 - 更新下载链接,由 @cdrage 提交 #12115
  • 日常维护:改进提供程序小部件图标,由 @SoniaSandler 提交 #12112
  • 日常维护(vitest):移除未使用的文件,由 @axel7083 提交 #12110
  • 日常维护:允许在测试中使用更宽松的数据,由 @benoitf 提交 #12100
  • 日常维护:在 TerminalWindow 中添加缺失的 dispose 方法,由 @benoitf 提交 #12099
  • 日常维护:更新 estree-util-value-to-estree 至 v3.3.3,由 @benoitf 提交 #12085
  • 日常维护:更新 image-size 至 1.2.1,由 @benoitf 提交 #12084
  • 日常维护(package.json):build 应包含 build:preload:types由 @axel7083 提交 #12059
  • 日常维护:在某些地方使用 isUnixLike() 代替 isLinux(),由 @arrowd 提交 #12047
  • 日常维护:将关闭按钮迁移到 svelte 5,由 @deboer-tim 提交 #12043
  • 日常维护:FetchError 类型已从库中移除,由 @feloy 提交 #12042
  • 日常维护:启用 svelte/require-each-key 规则,由 @SoniaSandler 提交 #12041
  • 日常维护:更新至 podman 5.4.2,由 @feloy 提交 #12006
  • 日常维护(网站):修改了横幅和文档中的社区会议链接,由 @rujutashinde 提交 #11996
  • 日常维护:在 extension-api 中暴露 VmProviderConnection 和 VmProviderConnectionFactory,由 @SoniaSandler 提交 #11982
  • 日常维护(dockerode):升级到 3.3.37,由 @axel7083 提交 #11979
  • 日常维护:在实验模式下支持更改命名空间,由 @deboer-tim 提交 #11964
  • 日常维护:将状态图标迁移到 svelte 5,由 @deboer-tim 提交 #11961
  • 日常维护:在故障排除页面中添加 aria 角色和标签,由 @odockal 提交 #11960
  • 日常维护(deps-dev):更新 eslint-plugin-svelte 至 v3.5.0,由 @benoitf 提交 #11959
  • 日常维护:本地使用 lcov 报告器,由 @feloy 提交 #11951
  • 日常维护:失败的单元测试最多重试 3 次,由 @benoitf 提交 #11947
  • 日常维护:为 Windows 添加了显示手动安装步骤的对话框,由 @gastoner 提交 #11946
  • 日常维护:向 Kind 提供程序添加更新信息,由 @SoniaSandler 提交 #11936
  • 日常维护:迁移提供程序按钮 onclick,由 @deboer-tim 提交 #11934
  • 日常维护:将模态插槽迁移到 snippet,由 @deboer-tim 提交 #11932
  • 日常维护:将标签页迁移到 svelte 5,由 @deboer-tim 提交 #11929
  • 日常维护:用 json 输出替换 lcov 以获取覆盖率,由 @benoitf 提交 #11902
  • 日常维护:props 接口,由 @deboer-tim 提交 #11901
  • 日常维护:为 mac podman 套接字失败添加警报,由 @cdrage 提交 #11892
  • 日常维护:将设置 podman-mac-helper 添加到仪表板,由 @cdrage 提交 #11890
  • 日常维护:故障排除页面改进 - aria,由 @odockal 提交 #11888
  • 日常维护:移除 @typescript-eslint/no-explicit-any 的使用,由 @jeffmaury 提交 #11883
  • 日常维护(重构):将 Modal 组件迁移到 Svelte5,由 @jeffmaury 提交 #11881
  • 日常维护:将 ui 包图标更新到 svelte 5,由 @deboer-tim 提交 #11869
  • 日常维护(task-popup):添加了自动消失的任务弹出窗口,由 @gastoner 提交 #11867
  • 日常维护:将 ErrorMessage 组件更新到 svelte 5,由 @SoniaSandler 提交 #11866
  • 日常维护:移除旧的 docker 兼容性代码,由 @cdrage 提交 #11861
  • 日常维护:移除跟踪信息,由 @benoitf 提交 #11853
  • 日常维护(Carousel):将组件迁移到 svelte v5,由 @benoitf 提交 #11852
  • 日常维护:允许可选的 dock 属性,由 @benoitf 提交 #11850
  • 日常维护:启用 svelte/require-each-key 规则 - 第 5 部分 - image,由 @SoniaSandler 提交 #11840
  • 日常维护(configuration-impl):移除 any 的使用,由 @benoitf 提交 #11837
  • 日常维护:使下拉菜单的左侧控件可点击,由 @deboer-tim 提交 #11835
  • 日常维护:启用 svelte/require-each-key 规则 - 第 4 部分,由 @SoniaSandler 提交 #11834
  • 日常维护:更新了 tsconfig 并修复了类型检查,由 @gastoner 提交 #11832
  • 日常维护:将链接组件迁移到 svelte5,由 @gastoner 提交 #11830
  • 日常维护:向下拉菜单添加左侧 snippet,由 @deboer-tim 提交 #11810
  • 日常维护(storybook):添加带子项的 Table 故事,由 @axel7083 提交 #11808
  • 日常维护(config-registry):移除 any 的使用,由 @benoitf 提交 #11807
  • 日常维护:启用 svelte/require-each-key 规则 - 第 3 部分,由 @SoniaSandler 提交 #11795
  • 日常维护:启用 svelte/require-each-key 规则 - 第 2 部分 - kube 和 ingresses-routes,由 @SoniaSandler 提交 #11794
  • 日常维护:启用 svelte/require-each-key 规则 - 第 1 部分,由 @SoniaSandler 提交 #11793
  • 日常维护:修复对齐并使提供程序小部件保持一致,由 @deboer-tim 提交 #11781
  • 日常维护:克隆 kubeconfig 而不是从磁盘重新读取,由 @deboer-tim 提交 #11779
  • 日常维护:用于更改 kubernetes 命名空间的 api,由 @deboer-tim 提交 #11753
  • 日常维护:启用 svelte/require-store-reactive-access 规则,由 @cdrage 提交 #11726
  • 日常维护:kind 扩展 - 部署 ingress 时使用配置名称,由 @cdrage 提交 #11722
  • 日常维护:将 docker 兼容性移出实验模式,由 @SoniaSandler 提交 #11708
  • 日常维护:还原 #11340,由 @axel7083 提交 #11699
  • 日常维护(dependabot):分组更新 typedoc 依赖,由 @axel7083 提交 #11692
  • 日常维护:将 FreeBSDInfo 类引入 sys-info,由 @arrowd 提交 #11676
  • 日常维护:从仪表板移除 docker 兼容性警告,由 @cdrage 提交 #11675
  • 日常维护:为与 kubernetes-client v1.1.0 的兼容性做准备,由 @feloy 提交 #11668
  • 日常维护:为合并队列添加作业名称,由 @benoitf 提交 #11661
  • 日常维护:为 pr-check GH 操作也处理 merge_group 事件,由 @benoitf 提交 #11659
  • 日常维护:使用最新的 pnpm v10,由 @benoitf 提交 #11656
  • 日常维护:刷新依赖 (pnpm upgrade),由 @benoitf 提交 #11655
  • 日常维护:更新至 podman 5.4.1,由 @feloy 提交 #11653
  • 日常维护:将 babel 依赖从 7.26.0 更新到 7.26.10,由 @benoitf 提交 #11652
  • 日常维护:为 PR 检查添加 merge-group 选项,由 @benoitf 提交 #11646
  • 日常维护:更新 jsonpath-plus,由 @benoitf 提交 #11644
  • 日常维护:更新 axios,由 @benoitf 提交 #11643
  • 日常维护:更新 prismjs,由 @benoitf 提交 #11642
  • 日常维护:避免“变量在赋值前使用”的错误,由 @benoitf 提交 #11641
  • 日常维护:启用 svelte/no-immutable-reactive-statements,由 @feloy 提交 #11624
  • 日常维护:优先使用空值合并,由 @benoitf 提交 #11621
  • 日常维护:修复空值合并,由 @benoitf 提交 #11620
  • 日常维护:更改导入,由 @benoitf 提交 #11619
  • 日常维护:更改 json 文件的导入方式,由 @benoitf 提交 #11618
  • 日常维护:添加社区会议横幅,移除 AI Lab 横幅,由 @cdrage 提交 #11610
  • 日常维护:格式化未格式化的文件,由 @benoitf 提交 #11609
  • 日常维护:修复 svelte/infinite-reactive-loop,由 @benoitf 提交 #11607
  • 日常维护:网站使用 Node.js v22,由 @benoitf 提交 #11606
  • 日常维护(deps-dev):将 electron 从 34.3.0 升级到 35.0.1 并升级到 Node.js v22,由 @benoitf 提交 #11603
  • 日常维护:重构 spyOn,由 @benoitf 提交 #11601
  • 日常维护:修复空值合并,由 @benoitf 提交 #11600
  • 日常维护:移除 any 的使用,由 @benoitf 提交 #11599
  • 日常维护(code-guidelines):测试样式属性,由 @axel7083 提交 #11567
  • 日常维护:在提供程序小部件中指示是否有可用更新,由 @SoniaSandler 提交 #11556
  • 日常维护:移除了 no-reactive-reassign eslint 规则,由 @gastoner 提交 #11549
  • 日常维护:为 1.17 发布横幅添加眉题,由 @cdrage 提交 #11548
  • 日常维护(设置):将导航外观默认更改为图标加标题,由 @axel7083 提交 #11544
  • 日常维护:将终端服务移至 kubernetes,由 @deboer-tim 提交 #11520
  • 日常维护:清理 PodInfoUI kind,由 @deboer-tim 提交 #11519
  • 日常维护:从 pods 页面移除未使用的 kube 路径,由 @deboer-tim 提交 #11516
  • 日常维护:移除未使用的 pod 终端标签页,由 @deboer-tim 提交 #11500
  • 日常维护:pods 名称列清理,由 @deboer-tim 提交 #11499
  • 日常维护(deps-dev):将 eslint-plugin-svelte 从 2.46.1 升级到 3.0.2,由 @jeffmaury 提交 #11497
  • 日常维护:为 kubernetes 权限添加了权限监听器,由 @gastoner 提交 #11492
  • 日常维护:从 docker 扩展 svelte 中移除 no-explicit-any,由 @cdrage 提交 #11481
  • 日常维护:从部署中移除 no-explicit-any,由 @cdrage 提交 #11479
  • 日常维护:从 lib/dashboard 中移除 no-explicit-any,由 @cdrage 提交 #11478
  • 日常维护:减少可扩展组件的默认间距,由 @deboer-tim 提交 #11475
  • 日常维护:从 config map 空屏幕中移除 explicit-any,由 @cdrage 提交 #11435
  • 日常维护:移除 pod kubernetes 操作,由 @deboer-tim 提交 #11410
  • 日常维护(podman):tsconfig 中缺少 module 属性,由 @axel7083 提交 #11361
  • 日常维护:移除 podman pod kubernetes 导航,由 @deboer-tim 提交 #11352
  • 日常维护(electron):启用 web 安全,由 @axel7083 提交 #11340
  • 日常维护:从 lib/appearance 中移除 no-explicit-any,由 @cdrage 提交 #11282
  • 日常维护:从 lib/actions 中移除 no-explicit-any,由 @cdrage 提交 #11278
  • 日常维护:移除 @typescript-eslint/no-explicit-any 的使用,由 @jeffmaury 提交 #10998

测试 🚦

  • 日常维护(测试):参数化超时,由 @cbr7 提交 #12171
  • 日常维护(测试):使跟踪和视频删除可配置,由 @cbr7 提交 #12134
  • 日常维护(测试):添加编辑镜像时错误检查,由 @cbr7 提交 #12128
  • 修复(测试):修复扩展页面的标题定位器,由 @odockal 提交 #12101
  • 测试(ui):为按钮添加 svelte 遗留用法,由 @axel7083 提交 #12076
  • 日常维护(测试):重构导航栏的等待器,由 @cbr7 提交 #12065
  • 日常维护(测试):等待屏幕,由 @cbr7 提交 #12057
  • 日常维护(测试):切换到轮询断言以增强鲁棒性,由 @cbr7 提交 #12038
  • 日常维护(测试):处理由竞态条件抛出的异常,由 @cbr7 提交 #12033
  • 测试:为使用自定义配置的 Kind 集群部署添加 e2e 测试,由 @amisskii 提交 #12010
  • 日常维护(测试):增加超时以避免竞态条件,由 @cbr7 提交 #11958
  • 日常维护(测试):添加终端验证检查,由 @cbr7 提交 #11955
  • 日常维护(测试):修复 k8s e2e 测试,由 @amisskii 提交 #11928
  • 日常维护(测试):添加检查镜像徽章的方法,由 @cbr7 提交 #11897
  • 日常维护(测试):添加故障排除 pom 和冒烟 e2e 测试,由 @odockal 提交 #11891
  • 测试(ui/table):确保带子行的行被覆盖,由 @axel7083 提交 #11886
  • 测试:重构 preload/src/index.ts 的测试,由 @feloy 提交 #11828
  • 测试:k8s CronJob 资源页面的 e2e 测试,由 @amisskii 提交 #11812
  • 日常维护(测试):增加断言的超时时间,由 @cbr7 提交 #11788
  • 测试(e2e):在压力测试用例名称中添加了预期对象数量,由 @danivilla9 提交 #11768
  • 测试:k8s ingress e2e 测试,由 @amisskii 提交 #11752
  • 测试:新的 cli e2e 测试,由 @cbr7 提交 #11750
  • 日常维护(测试):Windows 的 Docker 兼容性 e2e 测试,由 @xbabalov 提交 #11721
  • 日常维护(测试):参数化严格匹配,由 @cbr7 提交 #11629
  • 日常维护(测试):修复 k8s e2e 测试,由 @amisskii 提交 #11628
  • 日常维护(测试):移除过时的方法,由 @cbr7 提交 #11617
  • 测试:k8s services e2e 测试,由 @amisskii 提交 #11604
  • 日常维护(测试):将端口转发操作提取到专用工具文件中,由 @amisskii 提交 #11588
  • 修复(测试):svelte 5.22.5,由 @axel7083 提交 #11568
  • 日常维护(测试):增强将镜像推送到 kind 的方法,由 @xbabalov 提交 #11494
  • 日常维护(测试):添加推送镜像 e2e 测试,由 @cbr7 提交 #11433
  • 日常维护(测试):跳过在 rootless 模式机器上运行的 kind 测试,由 @danivilla9 提交 #11388
  • 测试:由 @amisskii 添加镜像清单的 E2E 测试 #11186

文档 📖

  • 文档:由 @benoitf 添加更多 Readme 徽章 #12166
  • 文档:由 @benoitf 添加社区会议条目 #12159
  • 文档:由 @fabienengels 添加 EOST 作为采用者 #12106
  • 文档(网站):由 @shipsing 修正故障排除文档中的文件名 #12073
  • 文档(网站):由 @shipsing 更新 Kubernetes 部分以反映如何切换… #12009
  • 文档(网站):由 @shipsing 添加与扩展相关的用例及 API 参考 #11978
  • 文档(网站):由 @shipsing 在文档中添加故障排除部分 #11950
  • 文档(网站):由 @shipsing 在文档中为已发布的扩展添加链接 #11945
  • 文档(网站):由 @shipsing 添加了将 Podman Desktop 扩展发布到目录的详细信息 #11893
  • 文档(网站):由 @shipsing 根据最新更改更新了 Kubernetes 部分… #11718
  • 文档:由 @AlexonOliveiraRH 添加启用 ip_tables 的说明 #11710
  • 文档(网站):由 @shipsing 在文档中添加了卸载部分 #11689
  • 文档:由 @cdrage 向扩展页面添加更多信息 #11673
  • 文档(网站):由 @shipsing 修复格式问题 #11638
  • 文档:由 @jeffmaury 更新 RHEL 10 的 RHEL WSL 博客 #11625
  • 文档:由 @rujutashinde 向社区页面添加了演示、演讲和社区会议链接 #11554
  • 文档(网站):由 @shipsing 添加了一篇关于配置镜像仓库的博客 #11542
  • 文档(网站):由 @shipsing 添加了配置镜像仓库的步骤 #11465
  • 文档:queryBy vs getBy by @feloy #11446
  • 文档(网站):由 @benoitf 添加 1.17 版本的博客文章 #11431

ci 🔁

  • CI:由 @step-security-bot 强化 GitHub Actions #12162
  • CI:由 @step-security-bot 强化 GitHub Actions #12160
  • CI:由 @benoitf 调整 codecov 报告 #11770
  • CI:由 @benoitf 向 codecov 报告单元测试覆盖率 #11769

功能 💡

  • 功能:由 @deboer-tim 为清单添加导航 API #12143
  • 功能(vitest):由 @axel7083 配置工作空间 #12111
  • 功能(PinRegistry):由 @axel7083 添加遥测事件 #12088
  • 功能(status-bar):由 @axel7083 固定/取消固定提供程序 #11973
  • 功能:由 @feloy 实现虚拟机提供程序详情/终端 #11948
  • 功能:由 @feloy 创建虚拟机提供程序前端 #11924
  • 功能:startProvider 适用于虚拟机连接,由 @feloy #11880
  • 功能:由 @feloy 向前端添加虚拟机提供程序生命周期 #11863
  • 功能(ProviderButton):由 @axel7083 添加左侧插槽 #11862
  • 功能:由 @feloy 更新虚拟机的 start/stop/editProviderConnectionLifecycle #11839
  • 功能:由 @feloy 创建虚拟机提供程序连接(后端)#11827
  • 功能:由 @feloy 将虚拟机提供程序信息添加到 ProviderInfo 结构中 #11787
  • 功能:由 @feloy 实现 setVmProviderConnectionFactory #11777
  • 功能(前端):由 @axel7083 向提供程序小部件添加 class 属性 #11775
  • 功能:由 @deboer-tim 添加更改 Kubernetes 命名空间的控件 #11756
  • 功能:由 @feloy 注册虚拟机提供程序连接 #11755
  • 功能(extensions/kind):由 @Blaimi 将 projectcontour 更新至 v1.30.2 #11734
  • 功能(pin-registry):由 @axel7083 向主世界公开 pin / unpin / list #11701
  • 功能:由 @axel7083 向主世界公开 ListImagesOptions #11700
  • 功能:由 @feloy 在 Kubernetes 仪表板中表示未授权的资源 #11639
  • 功能:由 @feloy 处理 exec 命令未找到时的错误 #11608
  • 功能:由 @feloy 在 Kubernetes 实验模式下显示资源计数 #11529
  • 功能:由 @cdrage 向 Kubernetes 添加 Jobs #11474
  • 功能:由 @deboer-tim 为学习中心使用可展开组件 #11470
  • 功能:由 @feloy 实现 Kubernetes 实验性后端提供活动资源计数 #11467
  • 功能(main):由 @axel7083 为提供程序添加 pin-registry #11422
  • 功能:由 @bmahabirbu 添加从状态栏自动滚动到提供程序的功能 #11420
  • 功能:由 @gastoner 为 Kubernetes 权限添加了可视化指示器 #11307
  • 功能:由 @axel7083 实现 kube play 构建支持 #10801
  • 功能:由 @Firewall 添加社区页面 #10551

修复 🔨

  • 修复:由 @deboer-tim 修复镜像详情导航 #12139
  • 修复(Button):由 @axel7083 绑定用法和事件类型 #12086
  • 修复(UI):由 @axel7083 修复 ImageDetailsCheck 测试中的竞态条件 #12077
  • 修复:由 @jeffmaury 在 Windows 上也使用中间 CA 存储 #12066
  • 修复:由 @bmahabirbu 更新了 configmap 和 secret 的大小写 #12048
  • 修复:由 @feloy 移除不必要的赋值 #12036
  • 修复:由 @jeffmaury 在通过回调发送结果前重置 messageBox #12008
  • 修复(Table.svelte):由 @axel7083 修复 children 函数的用法 #11980
  • 修复(PinRegistry):由 @axel7083 修复监听器和虚拟机支持 #11976
  • 修复:由 @feloy 修复命名空间下拉菜单的测试 #11971
  • 修复(UI):由 @axel7083 使 Carousel 成为通用组件 #11922
  • 修复:由 @feloy 修复 Kubernetes 仪表板上没有当前上下文的问题 #11903
  • 修复:由 @benoitf 确保在切换 docker 上下文后刷新上下文列表 #11898
  • 修复:由 @deboer-tim 在创建 kind 集群时等待 kubeconfig 更改 #11868
  • 修复(dropdown):由 @axel7083 确保 onChange 的值为非 undefined #11860
  • 修复:由 @deboer-tim 修复名称列的对齐方式 #11838
  • 修复:由 @amisskii 为 Kubernetes Ingress/Routes 资源添加删除确认对话框 #11806
  • 修复(storybook/expandable):由 @dgolovin 启用 no-useless-children-snippet 规则并修复一处违规 #11797
  • 修复:由 @SoniaSandler 更新状态栏中第一个提供程序的工具提示位置 #11796
  • 修复(文档):由 @Virakal 修复 `docker export` 语法 #11792
  • 修复(前端):由 @axel7083 修复状态栏顺序 #11773
  • 修复:由 @feloy 在 Kubernetes 提供程序被销毁时从 map 中移除 #11767
  • 修复(extensions/kind):由 @Blaimi 在 download.ts 中使用正确的类型 #11733
  • 修复:由 @deboer-tim 修复 Kubernetes 名称列的对齐问题 #11732
  • 修复:由 @odockal 将最低 node 类型更新至 v22 #11730
  • 修复:由 @bmahabirbu 启用 svelte no-reactive 规则并测试了相关文件 #11709
  • 修复(tools):由 @axel7083 移除 generator.spec.ts 中的 no-explicit-any #11706
  • 修复(preload-webview-spec):由 @axel7083 移除 no-explicit-any #11705
  • 修复(preload-webview-index):由 @axel7083 移除 no-explicit-any #11704
  • 修复(渲染器):由 @axel7083 修复在有多个连接时从现有容器创建容器的问题 #11702
  • 修复:由 @feloy 修复在 404 错误时 informer 不应被声明为离线 #11674
  • 修复:由 @benoitf 修复网站 sprint 链接 #11663
  • 修复:由 @vzhukovs 为 flatpak 构建授予对容器目录的访问权限 #11654
  • 修复:由 @bmahabirbu 在 PATH 检查中移除了 compose /usr/local/bin,以与 kubectl 保持一致 #11651
  • 修复:由 @feloy 修复实验性 Kubernetes 不使用 ResourceName 的问题 #11616
  • 修复:由 @SoniaSandler 使创建新连接表单中的标签能够正确调整大小,并更新了表单组件的宽度 #11532
  • 修复:由 @deboer-tim 修复按钮焦点轮廓 #11483
  • 修复:由 @deboer-tim 添加返回按钮的光标指针 #11471
  • 修复:由 @vzhukovs 修复输入字段的正确验证 #11359
  • 修复:由 @chkpnt 修复在 macOS 下处理系统代理绕过值的问题 #10975

配置镜像仓库

·阅读时间 3 分钟
Shipra Singh
技术文档工程师

Docker Hub 最终用户许可协议 (EULA) 施加的较低速率限制使社区成员难以频繁访问 docker.io 镜像。解决此问题的一个简单方法是在 registries.conf 文件中为 docker.io 注册表配置镜像。这样,他们就可以在需要时访问 Docker 资源。

使用 Podman Desktop UI,您可以轻松添加注册表位置并配置其镜像。配置镜像会将注册表重定向到另一个位置,从而使您能够使用其内容。例如,如果您已将 ghcr.io 配置为 docker.io 的镜像并尝试拉取资源,Podman 将从 ghcr.io 而不是 docker.io 拉取资源。

这篇博客文章将介绍如何为 docker.io 仓库配置镜像。

先决条件

配置:为 docker.io 配置镜像

  1. 转到 Settings > Resources 页面。
  2. 在 Podman 磁贴中选择 更多选项 > 设置注册表配置。命令面板随即打开。设置注册表配置
  3. 设置您的仓库配置
  4. 从命令面板中选择 添加注册表配置 选项。添加注册表配置
  5. 输入注册表位置,例如 docker.io,然后按 Enter 键。docker.io 注册表已添加到面板中。已添加 docker.io 注册表
  6. 从命令面板中选择 docker.io
  7. 输入您要镜像注册表的位置,例如 ghcr.io,然后按 Enter 键。docker.io 注册表的条目显示了其镜像位置。镜像注册表位置
  8. 选择 结束配置注册表 选项以结束注册表配置。结束注册表配置

验证:镜像

没有直接的方法可以从 UI 验证镜像配置。但是,您可以使用 CLI 进行验证。

  1. 与默认的 Podman machine 启动一个交互式会话
$ podman machine ssh <machine_name>
  1. docker.io 拉取一个无效的镜像。
$ podman pull docker.io/invalid

终端中会出现一条错误消息,指示从镜像拉取镜像失败。您将收到错误消息:Mirrors have also failed

Podman Desktop 1.17 发布

·阅读时间 29 分钟
Florent Benoit
首席软件工程师

Podman Desktop 1.17 发布!🎉

podman-desktop-hero-1.17

Podman Desktop 1.17 现已发布!点击此处下载

此版本带来了令人兴奋的新功能和改进:

  • 新的运行工作流 🛠️:只需几步即可从镜像启动容器。
  • 镜像仓库镜像配置 🔄:使用专用命令简化镜像仓库镜像设置。
  • 更流畅的 kind 集群体验 ☁️:即使没有预装 kind 二进制文件,也能轻松启动 Kubernetes 集群。
  • Podman 5.4 🚀:升级到最新的 Podman 引擎以获得增强的性能和功能。
  • 重新定义的 Pods 📦:明确区分 Podman pods 和 Kubernetes pods,以提高可用性。
  • Kubernetes 实验模式 ⚡:改变资源收集和监控的方式。

Podman Quadlets 与 Podman Desktop

·5 分钟阅读
Axel Stefanini
软件工程师

banner

容器通常部署在 Kubernetes 集群中。然而,对于单节点服务器或开发过程中的小规模用例,Kubernetes 可能有些大材小用。

对于运行包含多个交互容器的自治应用程序,有什么更轻量级的解决方案呢?

在这篇博客中,我们将深入探讨 Quadlet 是什么、它们的优势,以及如何在 Podman Desktop 中使用它们。

Podman Desktop 1.16 发布

·阅读时长 19 分钟
Philippe Martin
首席软件工程师

Podman Desktop 1.16 版本发布!🎉

podman-desktop-hero-1.16

Podman Desktop 1.16 现已发布!点击此处下载

此版本带来了令人兴奋的新功能和改进:

  • 实验性功能:设置中新增“实验性”部分,提供当前实验功能列表及相关讨论链接
  • 供应器显示在状态栏:供应器从仪表板移至状态栏,以提高其可见性(实验性功能)
  • 仅清理未标记的镜像:清理镜像时,可选择清理“所有未标记的镜像”或“所有未使用的镜像”
  • 在容器日志中搜索:可在容器和 Pod 的日志中搜索特定术语
  • Kubernetes: 仅监控当前上下文:默认情况下仅监控当前上下文

Podman Desktop BootC 扩展 1.6 发布

·4 分钟阅读
Charlie Drage
软件工程师

BootC 扩展 1.6 发布!🎉

banner

BootC (Bootable Container) 是 Podman Desktop 的一个扩展,用于构建可启动的容器磁盘镜像。从标准容器镜像到完全可启动的 USB 操作系统!

您可以通过 Podman Desktop 扩展目录 更新或安装该扩展。

此版本引入了令人兴奋的新功能和改进。

  • 详细的示例页面: 每个示例现在都有一个专门的页面,提供详细的使用说明。
  • 交互式构建配置创建器: 直接在图形界面中通过填写表单轻松创建您的构建配置。
  • 实验性 Linux 虚拟机支持: 增加了在生成的镜像上运行 Linux 虚拟机的支持。

发布详情

示例现在有了详情页面

每个示例现在都包含一个专门的详情页面!点击示例部分中的更多详情,查看每个示例的逐步说明。

example details

交互式构建配置创建器

无需手动创建自定义构建配置。使用我们的交互式构建配置创建器,通过用户友好的表单轻松生成您自己的构建配置。

build config interactive

实验性 Linux 虚拟机支持

现在已支持在生成的镜像上运行虚拟机!请在磁盘镜像页面查找新的虚拟机(实验性)选项卡或专门的虚拟机启动按钮。

linux support


详细发布变更日志

功能 💡

  • 功能:由 @cdrage 在 #1017 中添加示例详情页面
  • 功能:由 @cdrage 在 #1026 中添加构建配置器
  • 功能:由 @cdrage 在 #1102 中添加 Linux 虚拟机实验性支持

杂项 🛠️

  • 杂务:由 @deboer-tim 在 #969 中移除 yarn 引用
  • 杂务:由 @deboer-tim 在 #971 中更新到最新的 UI 库
  • 杂务:由 @deboer-tim 在 #970 中添加发布流程
  • 杂务:由 @benoitf 在 #1001 中删除 `packages/backend/yarn.lock`
  • 杂务:由 @benoitf 在 #999 中重命名 CODEOWNERS 中的团队
  • 杂务:由 @benoitf 在 #1003 中刷新依赖项以更新到最新版本
  • 杂务:由 @cdrage 在 #1098 中为示例添加遥测
  • 杂务:由 @cdrage 在 #1078 中更新 `bootc-image-builder` 镜像
  • 杂务:由 @cdrage 在 #1089 中从 AMD64 虚拟机命令中移除 HVF 加速
  • 杂务:由 @cdrage 在 #1014 中为每个示例添加 README
  • 杂务:由 @cdrage 在 #1015 中重命名章节
  • 杂务:由 @cdrage 在 #1116 中恢复到 Vite 5 并更新 Vitest

修复 🔨

  • 修复:由 @dgolovin 在 #1085 中修复 E2E 测试工作流安装 PNPM 失败的问题
  • 修复:由 @dgolovin 在 #1103 中修复 E2E 主工作流的节点设置步骤
  • 修复:由 @cbr7 在 #1052 中修复到 webview 的导航
  • 修复:由 @cbr7 在 #998 中修复 bootc E2E 测试

文档 📚

  • 文档:由 @cdrage 在 #1115 中更新发布文档

将 CNCF 项目与 Podman Desktop 结合使用

·4 分钟阅读
Charlie Drage
软件工程师

plane

Podman Desktop 是一个功能强大的工具,用于管理和可视化云原生应用程序,并且可以与一系列 CNCF (Cloud Native Computing Foundation) 项目无缝交互。

对于处理单容器应用、使用 Compose 文件的多容器配置以及 Kubernetes 集群上的复杂分布式应用的开发人员来说,它是一个易于上手的平台。

Podman Desktop 对 CNCF 项目的关键功能

Podman Desktop 汇集了三大强大功能,用于管理从小到大各种规模的项目:

  • 容器管理:支持创建、运行和监控容器。
  • Compose 支持:允许您部署在 Compose 文件中定义的应用程序。这对于管理需要多个服务(例如 Web 服务器、数据库和缓存)的应用程序特别有用。
  • Kubernetes 集成:提供管理多节点 Kubernetes 集群的工具,使其成为处理需要跨多个 Pod 和服务进行编排的更复杂分布式应用程序的理想选择。您可以使用我们的 MinikubeKind 扩展程序,通过 Podman Desktop 设置自己的开发集群。

Minikube

Minikube 是一个本地 Kubernetes 开发集群,它提供了一种学习和开发 Kubernetes 的简单方法。

Minikube 可以与 Podman Desktop 无缝集成,从而在 Podman 环境中实现 Kubernetes 开发工作流程。这可以通过安装 Minikube 扩展来实现,该扩展允许直接从 Podman Desktop 创建、管理和部署集群。

以下视频提供了从安装到创建集群的完整指南。

Backstage

Backstage 是一个用于构建开发人员门户的开源平台,由 Spotify 设计。它使工程团队能够创建定制的集中式中心,用于管理和文档化其服务、应用程序和基础设施。Backstage 的可扩展架构包括用于对软件组件进行编目、组织文档、管理云资源和跟踪工作流的功能。

部署 Backstage 的一种流行方法是通过 Helm chart。部署后,您可以在 Kubernetes Dashboard 中查看 Backstage 的服务,以监控组件并确保正确配置

backstage services

您还可以使用 Podman Desktop 的端口转发功能访问您部署的 Backstage 实例。此功能允许您安全地将本地端口转发到在您的 Kubernetes 集群上运行的 Backstage 服务,从而可以轻松地从本地浏览器访问该实例。

backstage port forward

Dapr

Dapr (分布式应用程序运行时) 是一个开源、事件驱动的运行时,旨在帮助开发人员构建可无缝运行在云或边缘环境中的弹性、无状态和有状态应用程序。

Dapr 抽象了分布式系统的复杂性,为服务调用、状态管理、发布/订阅消息传递和资源绑定提供了构建块,从而简化了微服务和云原生应用程序的开发。

通过遵循 Dapr 的自托管 Podman 设置指南,您可以使用 Podman 在本地环境中部署 Dapr。

在安装 Dapr CLI 后,要使用 Podman 初始化 Dapr,请执行以下命令:

$ dapr init --container-runtime podman

初始化后,您可以在 Podman Desktop 中直接管理 Dapr 并与之交互。

dapr

此外,Podman Desktop 还提供了一个“启动浏览器”按钮,可以快速方便地访问 Dapr UI 以进行监控和管理。

dapr browser

结论

无论您是管理 Kubernetes 集群、利用 Backstage 的强大功能构建开发者门户,还是使用 Dapr 部署微服务,Podman Desktop 都提供了一个统一的环境来简化您的工作流程。

查看 毕业和孵化中项目的列表,发现更多使用 Podman Desktop 的可能性。

Podman Desktop 1.15 发布

·14 分钟阅读
Axel Stefanini
软件工程师

Podman Desktop 1.15 发布!🎉

podman-desktop-hero-1.15

Podman Desktop 1.15 现已发布!点击此处下载

此版本带来了令人兴奋的新功能和改进:

  • 改进的反馈表单:重新设计,以便无缝地向 GitHub 报告问题 🪲。
  • 新的实验性任务管理器:一个经过改进的任务管理器现已可供测试 🔔。
  • 增强的 Kubernetes 事件:增加了对节点、服务和 Pod 等资源的事件支持 📜。
  • SSH 访问 Podman Machine:直接从 Podman Desktop 连接到您的 Podman machine。

发布详情 🔍

改进的反馈表单 📝

在 1.15 版本中,我们引入了一个重新设计的反馈表单,以简化问题报告。随着我们用户群的增长,提供一种方便的方式直接通过我们的主存储库向 GitHub 提交反馈至关重要:podman-desktop/podman-desktop/issues

在保留我们内部匿名反馈系统的同时,此更新还使用户能够在 GitHub 上预览他们的问题,以确保更好的沟通。

Feedback FormFeedback Form

反馈类别

我们现在提供三个不同的反馈类别:

  • 直接向开发者反馈:保持反馈匿名,仅对我们的团队可见。
  • 功能请求:将用户重定向到 GitHub 以建议新功能。
  • 错误报告:允许用户直接在 GitHub 上报告错误。
Feedback categoriesFeedback categories

实验性任务管理器 🔔

早在 0.13 版本中,我们就引入了任务管理器。随着长时间运行任务数量的增加,我们对其进行了改进以提高可用性。此更新版本作为实验性功能提供!

启用实验性任务管理器

要试用它,请转到 `Settings > Preferences > Tasks` 并启用 `Manager` 选项。

task manager experimental preferencetask manager experimental preference

有什么新功能?

主要变化包括:

  • 增强了对可用屏幕宽度的利用。
  • 提高了整个应用程序的一致性。
  • 增加了管理单个任务的额外功能。
task manager experimental preferencetask manager experimental preference

Kubernetes 事件 📜

今年,我们一直在稳步向 Podman Desktop 添加 Kubernetes 功能。虽然这项工作仍在进行中,但 1.15 版本引入了对 Kubernetes 事件的支持。这些事件现在可用于节点、服务和 Pod 等资源。

task manager experimental preferencetask manager experimental preference

SSH 访问 Podman Machine

一个常见的用户请求是能够建立到 Podman machine 的 SSH 连接,以进行调试或配置。在此版本中,您现在可以直接从其详情页面连接到您的 Podman machine。

task manager experimental preferencetask manager experimental preference

社区致谢

🎉 我们要向所有帮助 Podman Desktop 变得更好的朋友们表示衷心的感谢。在此版本中,我们收到了以下人员的拉取请求:


最后说明

已修复问题

此版本中修复的完整问题列表可在此处找到:此处

下载地址

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。


详细发布变更日志

文档 📚

  • 文档(网站):由 @shipsing 编辑了文档,以阐明如何使用 libkrun... #10111
  • 文档(网站):由 @shipsing 编辑了管理对象部分 #9845
  • 文档(网站):由 @sozercan 修复 mac gpu 容器基础 #10082
  • 文档(网站):由 @shipsing 强调了通过 UI 进行端口转发 #10006
  • 文档(网站):由 @shipsing 以程序化格式呈现信息 #9972
  • 文档(网站):由 @shipsing 更新了 docker 兼容性部分 #9408
  • 文档(网站):由 @shipsing 更新了故障排除部分 #9918
  • 文档(网站):由 @shipsing 更新了过时的流程 #10090
  • docs(website):添加了一个由 @shipsing 编写的 PD 扩展参考部分 #9607
  • docs(website):添加了一个由 @shipsing 编写的在 Windows 上设置 PD 的故障排除部分... #9894
  • docs(website):添加了一篇关于构建 Kubernetes 应用程序的博客,作者 @shipsing,在 #9780
  • 文档:1.14.0 发布说明,由 @gastoner 提交 #9628
  • 文档:添加 microshift podman desktop 示例博客,由 @cdrage #9031
  • 文档:由 @benoitf 添加关于草稿 PR 的部分 #9965
  • 文档:AI Lab 配方博客文章 by @feloy #9856
  • 文档:由 @Blaimi 修复 CONTRIBUTING 中的语法 #9925
  • 文档:由 @cdrage 更新索引页上的扩展落地页 #9812
  • 文档:由 @cdrage 更新发布模板的小写标题 #9703

功能 💡

  • 功能(extensions/kind):由 @Blaimi 将 projectcontour 更新至 v1.30.1 #9927
  • 功能(feedback):由 @axel7083 在 additional-context 中添加已启用的扩展 #10276
  • 功能(feedback):由 @axel7083 添加前端复选框以包含系统信息 #10116
  • 功能(feedback):由 @axel7083 添加获取系统信息的支持 #10098
  • 功能:由 @SoniaSandler 添加一个错误报告反馈表单 #9833
  • 功能:由 @SoniaSandler 添加一个功能请求反馈表单 #9955
  • 功能:由 @benoitf 在容器日志页面添加清除日志的方式 #9528
  • 功能:由 @feloy 向反馈添加类别字段 #9761
  • 功能:由 @gastoner 在 typeahead 组件中添加错误视觉指示器 #9782
  • 功能:由 @gastoner 为拉取镜像输入添加错误视觉指示器 #9899
  • 功能:由 @benoitf 添加新的任务管理器 #10206
  • 功能:由 @benoitf 允许扩展导航到入门屏幕 #9759
  • 功能:由 @benoitf 允许从状态栏取消任务 #10209
  • 功能:由 @benoitf 允许取消可取消的任务 #10100
  • 功能:由 @feloy 通过健康检查来检查连接性 #10076
  • 功能:由 @feloy 检查资源权限 #10133
  • 功能:由 @feloy 收集服务事件 #9692
  • 功能:由 @benoitf 在 Docker 兼容性页面显示第三方贡献 #9777
  • 功能:由 @feloy 在没有 latest 标签的镜像可拉取时显示警告 #9757
  • 功能:由 @feloy 显示节点事件 #9691
  • 功能:由 @feloy 显示服务事件 #9733
  • 功能:由 @mhdawson 在请求 nvidia 设备时强制使用 libPod #10251
  • 功能:由 @dgolovin 为状态栏帮助按钮实现下拉菜单 #9867
  • 功能:改进 libpod API 支持 - 翻译 selinux_opts by @mhdawson #10178
  • 功能:改进 libpod 支持 - 翻译设备 by @mhdawson #10180
  • 功能:由 @feloy 引入一个隐藏选项 kubernetes.statesExperimental #10018
  • 功能:由 @feloy 将 NumberInput 移至 svelte-ui #9872
  • 功能:由 @feloy 在部署上进行端口转发 #9946
  • 功能:提供一种简单的方式在机器中获取 shell - 渲染部分,由 @gastoner #9381
  • 功能:由 @benoitf 将目录发布到网站的 /extensions 目录下 #9804
  • 功能:由 @gastoner 在关闭反馈表单时显示消息框 #9975
  • 功能:由 @benoitf 更新至 podman v5.3.1 #9882

修复 🔨

  • 修复(CliToolRegistry):在注册、安装或更新时通知,由 @axel7083 提交 #9813
  • 修复(CI):将 podman-remote e2e 测试从所有测试套件的运行中排除,由 @odockal 提交 #9982
  • 修复(extensions/kind):由 @Blaimi 调整 contour 下载脚本以适应新的 octokit 版本 #9926
  • 修复(k8s-port-forward):如果启动失败则删除配置,由 @axel7083 提交 #9874
  • 修复(k8s-port-forward):如果启动失败则删除配置,由 @axel7083 #9888
  • 修复(monaco):使 vscode 焦点边框透明,由 @axel7083 提交 #10053
  • 修复(status-bar):当任务不确定时,进度应为不确定状态,由 @axel7083 提交 #9941
  • 修复(UI):更好地处理 `KubePort` 组件上的错误,由 @axel7083 提交 #9876
  • 修复(UI):对显示的进度值进行四舍五入,由 @axel7083 提交 #10031
  • 修复:当构建镜像时,可以使用上下文之外的 Containerfile,由 @feloy #9910
  • 修复:由 @SoniaSandler 为提示文本添加浅色模式颜色 #9915
  • 修复:由 @gastoner 添加了问号 #9814
  • 修复:当将 tar 作为构建上下文发送时,应用 0/0 作为 uid/gid,由 @benoitf #10282
  • 修复:由 @jeffmaury 缓存 pod exec websockets #10165
  • 修复:由 @dgolovin 修复通过入门引导和命令行工具安装 compose #10148
  • 修复:由 @SoniaSandler 修复创建新连接表单下拉菜单的 FormData #9708
  • 修复:由 @gastoner 修复了在离线环境中创建 hyperv 机器时不再尝试使用 wsl 镜像的问题 #9715
  • 修复:仅在应用未退出时进行控制台日志记录,由 @SoniaSandler 提交 #10064
  • 修复:自动启动机器时不尝试监控它,由 @benoitf #10308
  • 修复:由 @jeffmaury 确保系统路径被创建,如果不在 PATH 中则显示通知 #10176
  • 修复:由 @feloy 修复不稳定的测试 waitForPodsDeletion #9875
  • 修复:由 @jeffmaury 处理 promise 结果 #9700
  • 修复:改进 libpod API 翻译 - 扩展,由 @mhdawson #10179
  • 修复:由 @axel7083 修复导航 URL 以使用 summary #9696
  • 修复:由 @jeffmaury 修复了代理设置在切换到系统或禁用时未生效的问题 #10062
  • 修复:如果 configurationValues 中有键值,则依赖它,由 @lstocchi #9951
  • 修复:由 @axel7083 移除详情页中的额外边框 #10050
  • 修复:由 @axel7083 移除可为空的 detailsPage 绑定 #9788
  • 修复:在终端页面重启容器,由 @feloy #9796
  • 修复:跳过不稳定的文件系统测试,由 @axel7083 #10075
  • 修复:对镜像名称数组进行排序,将匹配项移至顶部,由 @dgolovin #9831
  • 修复:仅为当前上下文启动次要 informer,由 @feloy #9735
  • 修复:状态栏进度条百分比显示,由 @axel7083 #9791
  • 修复:由 @dgolovin 在渲染器包测试中为所有缺失的函数添加存根 #9773
  • 修复:表格组件在搜索项目时应限定范围,由 @benoitf #10211
  • 修复:如果容器未运行,终端不会重启 + 状态管理,由 @feloy #9793
  • 修复:测试:渲染器测试失败,由 @jeffmaury #10264
  • 修复:当容器使用 tty 选项运行时的问题,由 @feloy #9745
  • 修复:更新 Kubernetes 上下文观察者的消息,由 @jeffmaury #10017
  • 修复:在 powershell 调用中使用 `utf16le` 编码进行虚拟机平台检测,由 @dgolovin #9594
  • 修复:使用正确的头进行 play kube 操作,由 @benoitf #10036
  • 修复:由 @gastoner 修复 docker 兼容性设置的可见性 #10241
  • 修复:在 macOS 上监视 /var/run/docker.sock,由 @dgolovin #9714
  • 修复:由 @tony-sol 修复 LIMA_HOME 使用的变通方法 #10086
  • 修复:由 @feloy 修复错误的 pnpm-lock 文件 #9754

Podman AI Lab - 供开发者在本地运行 LLM 来构建 AI 应用程序

·10 分钟阅读
Philippe Martin
首席软件工程师

banner

Red Hat 为 Podman Desktop 提供了一个扩展,Podman AI Lab,它允许开发人员通过使用大型语言模型 (LLM) 发现应用程序示例,并为他们提供一个框架来创建自己的基于 AI 的应用程序并与他们的团队共享。

通过本文,我们将探索创建我们的第一个 AI 应用程序,并将其添加到 Podman AI Lab 的配方目录中的不同步骤。

我们的第一个实验将致力于为 podman-desktop.io 网站开发一个微服务。该微服务将接收来自网站的搜索词,并要求模型找到最匹配的页面,然后将结果返回给网站。

my first app

准备 Podman Desktop 和 Podman AI Lab

如果您还没有安装,请先安装 Podman Desktop 及其扩展 Podman AI Lab

为了获得更好的体验,建议使用 GPU 加速来提供模型。如果您的机器上配备了此类 GPU,您需要使用 LibKrun 提供程序(在 MacOS 上)创建一个 Podman 机器。有关 Podman AI Lab 的 GPU 支持的更多详细信息。

在撰写本文时,Podman AI Lab 的 GPU 支持仍处于实验阶段。您需要在首选项中启用该选项才能使用。

a podman machine running using libkrun

GPU support for inference servers preference is enabled

使用模型测试提示

Podman AI Lab 提供了一个可本地使用的开源模型目录。您可以前往 `Models > Catalog` 页面下载您选择的模型。在本文中,我们将使用 `Mistral-7B-instruct` 模型。

Mistral model is downloaded

模型下载完成后,我们可以测试并与该模型交互,以尝试为我们的应用程序找到最佳提示。对于聊天模型,Podman AI Lab 提供了一个 `Playground`,因此我们可以测试不同的提示并验证模型的响应是否足够。

让我们开始一个新的 playground(从 `Models > Playgrounds` 菜单),并发送我们的第一个提示

Give me a list of pages in the website podman-desktop.io related to "build an image"

模型应该会以人类可读的形式回复一些页面列表(参见下面的截图,我们收到的响应)。

a first prompt with human-readable output

问题是响应是人类可读的形式,但我们不希望 API 按原样返回此响应。我们希望获取页面的名称和 URL,并将它们发送到网站,以便网站可以使用其首选格式显示这些页面。

为此,我们可以尝试要求模型以结构化响应回复,使用以下提示

Give me a list of pages in the website podman-desktop.io related to "build an image" as JSON output as an array of objects with 2 fields name and url

这一次,我们收到了一个 JSON 格式的响应,这更适合我们的需求。

a prompt with structured output

我们不期望用户提出如此精确的问题,我们更倾向于将用户的确切问题发送给模型,而无需实时修改。为了实现这一点,聊天模型提供了系统提示功能。系统提示可以在聊天会话开始时定义。

Podman AI Lab 支持此功能,让我们用以下系统提示重新启动一个 Playground 会话

Give me a list of pages in the website podman-desktop.io related to the request as JSON output as an array of objects with 2 fields name and url

然后,发送提示 `build an image`,以模拟一个真实的用户搜索输入。

我们可以在下面的截图中看到,模型仍然返回一个适合我们用例的响应。

a session with a system prompt

请注意,本节并非关于如何编写最佳提示的课程。我相信您会为此找到更有效的提示。本节的目的是演示如何使用 Podman AI Lab 进行迭代,以完善您希望在应用程序中使用的提示。

测试配方

现在我们有了适合我们应用程序的提示,是时候启动我们的应用程序本身了。

许多开发者更喜欢从一个可用的应用程序示例开始,而 Podman AI Lab 通过一个配方目录提供了这样的示例,可以在 `AI Apps > Recipe Catalog` 页面看到。

让我们选择 Chatbot 配方(在 Chatbot 卡片上点击 `More details` 链接),并使用 Mistral 模型启动它(通过按 `Start` 按钮并填写表单)。

应用程序启动后,我们可以在 `AI Apps > Running` 页面访问正在运行的应用程序列表,并通过点击 `Open AI App` 链接访问应用程序的 UI。

我们可以再次通过输入我们的提示(不是带有系统提示的那个,因为该配方不支持提供系统提示)进行测试,并看到响应与从 playground 收到的非常相似。

a session on the Chatbot recipe

返回配方的详情页面,我们可以通过点击 在 VSCode 中打开 按钮、存储库链接或 本地克隆 链接来访问配方的源代码。

配方的结构

配方的入口点是其存储库中的 ai-lab.yaml 文件。

让我们来看看聊天机器人示例的此文件内容(文件语法在此文档中指定)。

version: v1.0
application:
type: language
name: ChatBot_Streamlit
description: Chat with a model service in a web frontend.
containers:
- name: llamacpp-server
contextdir: ../../../model_servers/llamacpp_python
containerfile: ./base/Containerfile
model-service: true
backend:
- llama-cpp
arch:
- arm64
- amd64
ports:
- 8001
image: quay.io/ai-lab/llamacpp_python:latest
- name: streamlit-chat-app
contextdir: app
containerfile: Containerfile
arch:
- arm64
- amd64
ports:
- 8501
image: quay.io/ai-lab/chatbot:latest

该文件定义了两个容器,一个用于推理服务器,另一个用于应用程序本身。

第一个容器用于推理服务器,是通用的,可以被任何使用聊天模型的应用重用。

第二个是我们特别感兴趣的。它定义了如何构建应用程序的容器镜像。它指向用于构建镜像的 Containerfile,我们可以在其中找到应用程序的源代码:在app/chatbot_ui.py文件中。

查看 Python 源代码文件,我们可以看到应用程序使用了 streamlit 框架来处理 UI 部分,并使用 langchain 框架与模型进行对话。

我们可以调整此源代码,将 UI 部分替换为能将应用变为 REST 服务的框架,并保留 langchain 部分。

源代码中一个有趣的部分是,该配方没有向用户暴露系统提示,而是在内部定义了一个(You are world class technical advisor)。

prompt = ChatPromptTemplate.from_messages([
("system", "You are world class technical advisor."),
MessagesPlaceholder(variable_name="history"),
("user", "{input}")
])

这正是我们希望在应用程序中实现的功能,我们将能够在此处指定我们之前找到的系统提示。

创建我们自己的应用

为我们的应用程序目的调整源代码超出了本文的范围,让我们在我们的应用程序仓库中查看结果。

如前一节所述,我们已将streamlit部分替换为flask框架,以创建具有两个端点的 REST API:一个用于 Podman AI Lab 所需的/健康检查,另一个用于/query,这将是微服务用户发送请求的端点。

我们还指明了我们自己的系统提示。

prompt = ChatPromptTemplate.from_messages([
("system", """
reply in JSON format with an array of objects with 2 fields name and url
(and with no more text than the JSON output),
with a list of pages in the website https://www.podman-desktop.io related to my query
"""),
MessagesPlaceholder(variable_name="history"),
("user", "{input}")
])

在本地测试我自己的应用

为了在应用程序开发过程中进行迭代,我们可以在本地主机系统上测试我们的应用程序,同时使用 Podman AI Lab 提供的模型。为此,我们需要从“模型 > 服务”页面启动一个新模型服务,点击“新建模型服务”,然后选择合适的模型(在我们的例子中是Mistral-7B-instruct),并指定一个端口号(比如 56625)。

a running inference server with Mistral model

然后,我们可以运行我们的应用程序,通过 MODEL_ENDPOINT 环境变量指定如何访问模型服务。

my app running locally

最后,我们可以向这个在本地运行并监听 5000 端口的应用发送请求,我们可以在下面的截图中检查到响应如预期一样,是一个 JSON 格式的页面列表(名称和 URL)。

a request to the micro-service

创建配方

最后一步是将此应用程序添加到 Podman AI Lab 配方目录中。

Podman AI Lab 为用户提供了一种使用自己的配方扩展所提供目录的方法。这可以通过在特定目录中添加文件来完成,如此文档中所述。

{
"version": "1.0",
"recipes": [
{
"id": "search-podman-desktop-io",
"description": "Search on Podman-desktop.io website",
"name": "Search Podman-desktop.io",
"repository": "https://github.com/redhat-developer/podman-desktop-demo",
"ref": "main",
"icon": "natural-language-processing",
"categories": ["natural-language-processing"],
"basedir": "ai-lab-demo/recipe",
"readme": "",
"recommended": ["hf.TheBloke.mistral-7b-instruct-v0.2.Q4_K_M"],
"backend": "llama-cpp"
}
]
}

通过创建内容如上所示的文件$HOME/.local/share/containers/podman-desktop/extensions-storage/redhat.ai-lab/user-catalog.json,您现在应该能够在 Podman AI Lab 的配方目录中看到一个新的配方Search Podman-desktop.io,并像运行任何其他配方一样运行它。当然,您可以与您的同事共享此文件,以与他们分享您的最新实验。

Podman Desktop + CNCF - 社区驱动的举措

·阅读时间 6 分钟
Markus Eisele
产品营销
Stevan Le Meur
产品经理

banner

今天,我们很高兴地宣布我们的 Podman Desktop 应用程序将作为沙盒项目加入云原生计算基金会 (CNCF)。这对我们的项目和社区来说是一个巨大的里程碑,我们对未来充满期待。

关于 Podman Desktop

Podman Desktop 基于 Podman 带来的创新,为容器化开发提供了一个强大而用户友好的环境。Podman 提供了一个无守护进程、无根的容器引擎,增强了安全性和灵活性,而 Podman Desktop 提供了一个直观的图形界面,用于管理容器和与 Kubernetes 交互。它通过插件系统得到增强,该系统允许开发人员根据自己的需求定制其内部循环容器工作流,并为其他项目以及其他容器引擎提供了灵活的扩展点。

为何选择 CNCF?

CNCF 是云原生世界的重要组织,它支持协作并推动 Kubernetes、Prometheus 和 Envoy 等关键项目的创新。作为 CNCF 项目,Podman Desktop 将受益于更高的知名度、一个中立的开放治理家园以及丰富的资源和专业知识。CNCF 项目将重新对与我们合作产生兴趣。此举将帮助我们发展社区,确保项目的长期可持续性,并加速其发展。

Podman Desktop 如何简化容器和 Kubernetes

使用容器进行开发可能很复杂。Podman Desktop 通过提供直观的界面和强大的工具来构建、管理和运行容器,从而简化了这一点。这允许开发人员专注于编写代码,而不是与基础设施作斗争。为什么这很重要?因为在当今复杂的世界中,开发人员的生产力至关重要。通过消除摩擦和简化工作流程,Podman Desktop 使开发人员能够更快地交付价值。Podman Desktop 使开发人员能够在本地运行 Kubernetes,模拟他们的生产环境。这消除了“在我的机器上运行”问题,并允许及早发现配置问题。通过缩小开发和生产之间的差距,Podman Desktop 降低了部署风险并加速了反馈循环。这导致更高质量的软件和更快的发布周期。

开源和 CNCF:开发工具的完美结合

我们相信开源的力量。开源软件促进透明度,鼓励协作,并推动创新。通过将 Podman Desktop 捐赠给 CNCF,我们确保它对所有人保持开放和可访问,围绕它培养一个充满活力的社区。CNCF 是 Podman Desktop 的完美归宿,因为它倡导开源价值观,并为协作开发提供了中立的基础。这确保了 Podman Desktop 保持供应商中立,并由用户需求驱动,保持开放选项并避免供应商锁定。

此外,尽管 CNCF 促进了令人难以置信的创新,许多开发人员受益于通过 CNCF 提供的项目数量,但人们认识到需要更多面向开发人员的工具。Podman Desktop 通过为容器化、管理和部署云原生应用程序提供以开发人员为中心、精简且直观的体验,完美地填补了这一空白。Podman Desktop 由于其设计和功能无缝弥合了本地容器开发和 Kubernetes 部署之间的差距,因此与 Kubernetes 具有天然的亲和性。这种密切关系与 CNCF 推动云原生技术采用的使命完美契合。

加入不断壮大的 Podman Desktop 社区

作为 CNCF 项目,我们有机会向更广泛的贡献者和用户社区敞开大门。我们相信开源在协作和多元视角中蓬勃发展。通过扩大我们的贡献者基础,我们可以加速创新,提高 Podman Desktop 的质量,并确保它满足各种用户的需求。

您可以通过多种方式做出贡献

  • 报告问题:如果您遇到错误或有改进建议,可以在 GitHub 问题追踪器上报告。请务必提供详细信息和重现问题的步骤。

  • 处理问题:您可以浏览 问题追踪器,并通过修复错误或实现新功能来做出贡献。这包括分叉仓库、进行更改和提交拉取请求。

  • 贡献代码:除了解决现有问题外,您还可以提出并贡献 Podman Desktop 功能、用户界面或与其他工具集成方面的全新功能或增强功能。了解更多关于如何贡献的信息。

  • 贡献插件:觉得缺少集成吗?您可以为 Podman Desktop 贡献自己的插件功能。查看指南

  • 改进文档:清晰全面的文档至关重要。您可以通过改进现有文档、添加新指南或创建教程来做出贡献。

  • 为网站做贡献:Podman Desktop 网站也是开源的。您可以为其内容、设计或翻译做出贡献。

  • 成为采用者:如果您是满意的用户,我们很乐意知道并分享。考虑通过拉取请求将您自己或您的组织添加到采用者列表中。

在您开始贡献之前,熟悉项目的贡献指南和代码架构会很有帮助。这些资源提供了有关编码风格、测试程序和整体开发过程的宝贵信息。您还可以加入 Kubernetes Slack 上的 #podman-desktop,与其他贡献者联系并获得帮助。

KubeCon 2024 及未来

我们正在盐湖城参加 KubeCon NA 2024,正式宣布这一激动人心的消息,并分享更多关于 Podman Desktop 和我们的路线图。欢迎到红帽展位打招呼,为项目做出贡献,并帮助我们塑造云原生开发的未来。

参与并了解更多

我们对 Podman Desktop 的新篇章感到无比兴奋,并迫不及待地想看看我们能与 CNCF 社区一起取得怎样的成就。

使用 Podman Desktop 创建 MicroShift 可启动镜像

·8 分钟阅读
Charlie Drage
软件工程师

banner

如果您不熟悉 BootC,它提供了一种令人印象深刻的方法,可以直接从单个 Containerfile 或预先存在的 BootC 支持镜像将应用程序部署到裸机。

一个“可启动”镜像,也称为 BootC 容器镜像,允许您使用一个简单的容器镜像来创建一个完整的可启动操作系统,无论是 raw 格式的虚拟机镜像还是用于 USB 安装的 iso

此功能非常适合各种用途,从简单的 HTTP 服务器到为全栈应用程序提供支持的操作系统。

在本教程中,我们将部署一个 OpenShift 衍生产品,名为 MicroShift,它是 OpenShift 的边缘优化版本,专为资源受限配置上的单节点设置而设计。把它想象成 OpenShift 的紧凑版本!

整个过程都通过一个单独的 Containerfile(或 Dockerfile)来完成。

要求

开始本教程前,请确保您已具备:

构建 BootC 容器镜像

首先,我们将构建初始的 BootC 容器镜像,稍后我们将用它来创建一个可启动的操作系统。

登录 Red Hat 镜像仓库

在继续之前,请从目录中下载 Red Hat Authentication 扩展,以启用对 Red Hat 镜像仓库的访问。

red hat login

然后登录您的帐户。

red hat login sign in

下载您的 OpenShift 混合云拉取密钥

下载您的拉取凭证

它会以 pull-secret.txt 的形式下载。请将其存放在安全的位置。

创建 Containerfile(或 Dockerfile)

Containerfile 对于创建可启动镜像至关重要。

需要注意的是,在构建过程中,我们将提供*一个*参数,即 PASSWORD,以便通过 redhat 用户名登录虚拟机。

我们将使用 MicroShift 镜像模式 GitHub 文档中的 Containerfile。

将上述链接中的 Containerfile 复制到一个新文件中,我们将使用 Podman Desktop 来构建它。

$ curl https://raw.githubusercontent.com/openshift/microshift/main/docs/config/Containerfile.bootc-rhel9 -o Containerfile

使用 Podman Desktop 构建

选择 Containerfile 并在 Podman Desktop 中构建它。

您需要提供:

  • 在 Containerfile 中创建的 redhat 用户的密码。

在构建页面的参数中以 USER_PASSWD 的形式传递该参数。

build

使用 BootC Podman Desktop 扩展构建可启动镜像

安装

从扩展目录安装 BootC Podman Desktop 扩展。

install

构建镜像

现在,从我们的容器镜像创建可启动镜像!

点击导航栏上新的 BootC 图标,然后转到构建页面。

build_button

构建完成后,您会在仪表盘上看到一条确认信息。

接下来,选择我们构建的镜像,并为测试可启动镜像选择一个合适的输出格式。对于使用 QEMU 和其他虚拟机软件(如 libvirt)进行本地测试,RAW 是一个常见的选择。

测试镜像

探索各种测试镜像的方法,可以使用本地软件或云平台。以下是使用 RAW 输出的可启动镜像的一些常见步骤。

运行虚拟机

本指南不涵盖所有运行虚拟机的方法,但以下是最常见的几种:

当使用 Hyper-V 时,用 BootC 创建一个 .vhd 镜像。

  1. 构建时,选择 .vhd 选项。
  2. 安装 Hyper-V
  3. 导入虚拟机

配置和验证 MicroShift

启动虚拟机后,您现在可以配置 MicroShift 并验证连接。

复制 OpenShift 拉取凭证

在继续验证 OpenShift 之前,必须先将 OpenShift 拉取凭证复制过去,以便 MicroShift 可以下载需要 Red Hat 镜像仓库认证的容器镜像。

下面我们将把您之前下载的 OpenShift 凭证复制到虚拟机中。

  1. 下载您的 OpenShift 拉取凭证,它会以 pull-secret.txt 的形式下载。

  2. 使用 scp 复制到虚拟机

$ scp -P 2222 pull-secret.txt redhat@localhost:~/
  1. 通过 SSH 登录到虚拟机
$ ssh redhat@localhost -p 2222
  1. 将凭证移动到 /etc/crio/openshift-pull-secret
$ sudo mv pull-secret.txt /etc/crio/openshift-pull-secret
  1. 重启 microshift 服务
$ sudo systemctl restart microshift

列出 Pod

下面我们将通过 SSH 登录到虚拟机,并确认 MicroShift 正在正确部署 Pod。

  1. 通过 SSH 登录到虚拟机
$ ssh redhat@localhost -p 2222
  1. 将生成的 kubeconfig 文件复制到 ~/.kube/config
$ mkdir -p ~/.kube
$ sudo cp /var/lib/microshift/resources/kubeadmin/kubeconfig ~/.kube/config
$ sudo chown redhat ~/.kube/config
  1. 使用 ockubectl 验证 Pod 是否正在运行
$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system csi-snapshot-controller-856bb8b9bc-9n7lj 1/1 Running 1 3d23h
kube-system csi-snapshot-webhook-7c64d4d4d7-98v6l 1/1 Running 1 3d23h
openshift-dns dns-default-n2td4 2/2 Running 2 3d23h
openshift-dns node-resolver-7cslg 1/1 Running 1 3d23h
openshift-ingress router-default-7cbc67954b-nqqc6 1/1 Running 1 3d23h
openshift-ovn-kubernetes ovnkube-master-zcqw5 4/4 Running 5 3d23h
openshift-ovn-kubernetes ovnkube-node-crnn9 1/1 Running 2 3d23h
openshift-service-ca service-ca-6799f567-k7lsc 1/1 Running 1 3d23h

使用 Podman Desktop 验证 MicroShift

或者,您可以将 MicroShift 配置文件复制到本地计算机,并在 Podman Desktop 上进行远程测试。

  1. 在您的本地计算机上,如果 .kube 目录不存在,请创建它。
$ mkdir ~/.kube
  1. 将远程 kubeconfig 文件复制到本地配置文件

在 MicroShift 中,一个 kubeconfig 文件会自动创建在 /var/lib/microshift/resources/kubeadmin/kubeconfig

将该文件复制到您的本地系统

scp -P 2222 redhat@localhost:/var/lib/microshift/resources/kubeadmin/kubeconfig ~/config

如果您已经有一个 ~/.kube/config 文件,请将 config 的内容复制到 ~/.kube/config 文件中。

  1. 使用 Podman Desktop 验证 MicroShift 集群

Podman Desktop 将自动检测您的 .kube/config 文件。

注意:您可能需要修改您的 .kube/config 文件,以反映您集群的正确域名或 IP 地址。

cluster

存储配置

默认情况下,存储配置需要一个 LVM 分区,并且不会部署 LVMS 存储管理器。这是由于构建 RAW 镜像时的限制。需要一个替代的非本地存储解决方案才能使用具有存储功能的 OpenShift 工件。添加 LVM 支持的功能已在此拉取请求中跟踪。

结论

本教程提供了使用 Podman Desktop 和 BootC 扩展部署可启动 MicroShift 镜像的分步指南。通过利用 BootC 和 Podman 等工具,我们简化了创建轻量级但功能齐全的 OpenShift 环境的过程,该环境适用于单节点边缘计算场景。

感谢您的跟随,祝您部署愉快!

Podman Desktop 扩展简介

·4 分钟阅读
Charlie Drage
软件工程师

programming

扩展是自定义和扩展 Podman Desktop 功能的强大工具。无论您是想添加新的容器管理功能、简化当前工作流,还是创建特定于您的技术堆栈的自定义 UI 元素,构建扩展都允许您根据特定需求定制 Podman Desktop 体验。

在本指南中,我们将介绍如何构建自己的 Podman Desktop 扩展,并提供详细文档链接,涵盖该过程的每个部分。

扩展简介

Podman Desktop 中有丰富的扩展,可以在 扩展 -> 目录 部分找到。

extension catalog

每个扩展都在 Podman Desktop 的基础上进行了扩展,例如提供带 Minikube 的 Kubernetes 开发集群,甚至分析您的镜像层

以下是镜像层浏览器扩展及其如何集成到 Podman Desktop 中的示例。

layers_explorer

开始您的项目

创建扩展的第一步是设置项目环境。要了解如何配置项目和添加基本组件,请查阅创建扩展的模板指南,其中将引导您从官方模板初始化项目。

添加 UI 组件

创建扩展时最常见的任务之一是添加用户界面。无论是添加按钮、面板还是图标,UI 组件都有助于使您的扩展更具交互性和可访问性。添加 UI 组件是完全可选的,扩展可以在没有 UI 组件的情况下运行。在添加 UI 组件文档中了解更多信息,您将在其中找到有关创建组件并将其集成到应用程序 UI 中的说明。

使用图标

图标是使您的扩展在视觉上更具独特性的好方法。您可以按照添加图标文档学习如何添加和样式化自定义图标。

以下是 bootc 扩展如何向 Podman Desktop 内的镜像列表添加图标的示例。

icons

扩展通常与现有菜单和导航集成,以便用户轻松访问新命令和功能。如果您想向上下文菜单添加项目,请查阅菜单配置文档,其中解释了如何向菜单添加命令以及如何使用 When Clauses 控制它们的显示。

以下是 bootc 扩展如何向镜像列表添加新菜单命令的示例。

menus

添加和配置命令

命令是大多数扩展的支柱,允许用户与应用程序交互并触发特定操作。

如果您需要定义和注册自定义命令,命令指南将向您展示如何创建响应用户操作或输入的命令,并将其绑定到扩展的工作流中。

您还可以配置这些命令以在不同的上下文出现。查看When 子句上下文文档,了解有关将命令限制为特定场景的更多信息。

命令深受 VS Code 命令的影响,并且可以类似地进行配置。有关更多信息,请参阅我们的命令指南

设置入门工作流

创建一个流畅的入门体验对于帮助用户开始使用您的扩展至关重要。这包括 CLI 二进制文件安装或其他初始设置值的步骤。

您可以使用入门工作流指南提供指导、教程或初始设置步骤。

以下是内置 compose 扩展如何为 compose CLI 二进制文件安装添加入门流程的示例。

compose

配置设置

构建好组件和命令后,您可能希望为扩展的高级用法设置配置选项。

配置文档概述了配置文件的结构以及如何将所有内容链接在一起以使用用户特定的值。

发布您的扩展

发布功能使用户能够安装您的扩展,您可以将扩展编译成容器镜像,以便用户轻松使用。请遵循发布指南,了解如何分发您的扩展。

结论

创建扩展为根据您的特定需求定制 Podman Desktop 开启了无限可能。

打包和发布您的扩展以供他人使用也很容易。

祝您在探索我们关于如何创建扩展的文档中玩得开心,编码愉快!

Podman Desktop 1.13 发布

·7 分钟阅读
Sonia Sandler
助理软件工程师

Podman Desktop 1.13 发布! 🎉

podman-desktop-hero-1.13

Podman Desktop 1.13 现已发布。点击此处下载

此版本包含

  • Hyper-V 支持:您现在可以直接从 Podman Desktop 创建和管理 Hyper-V Podman 虚拟机。
  • 镜像搜索功能:从 Podman Desktop 搜索镜像。
  • 更新了空状态页面:只需点击按钮,即可在容器、镜像、Pod 和 Kubernetes 页面开始您的旅程。
  • 新的 Kubernetes 导航:所有与 Kubernetes 相关的页面都已移至一个单独的子菜单,以便更轻松、更简洁地导航。
  • 镜像层浏览器扩展:通过这个新扩展,您可以浏览镜像的各个层。
  • 实验性的 Docker 兼容模式页面:您现在可以试用我们实验性的 Docker 兼容模式页面。

使用 Podman Desktop 构建您的 Kubernetes 应用程序

·阅读时间 6 分钟
Shipra Singh
技术文档工程师

Podman Desktop 与 Kubernetes 的集成分可帮助您在 Kubernetes 集群(例如 Kind 或 Minikube)上运行您的应用程序。

本博客涵盖以下几个方面

  • 从镜像仓库中的镜像构建容器化应用程序
  • 创建 pod
  • 设置本地 Kubernetes 集群
  • 将应用程序部署到 Kubernetes
  • 验证正在运行的服务

构建容器化应用程序

通过本博客,您将构建一个使用以下组件的容器化应用程序

  • 一个后端 Redis 服务器容器
  • 一个前端 Python 应用程序容器

为此,您可以从 quay.io 镜像仓库拉取相关镜像。

  1. 前往 Images (镜像) 组件页面。

  2. 点击 Pull (拉取)。 pull from registry

  3. 启动第一个容器

    1. 输入要从注册表拉取的镜像名称。例如,quay.io/podman-desktop-demo/podify-demo-backend输入镜像名称
    2. 点击 Pull image (拉取镜像)。此时会打开一个下载完成的通知。
    3. 点击 完成
    4. 单击与新添加的镜像对应的运行镜像图标。运行镜像
    5. 输入容器名称 redis-server
    6. 点击 Start Container (启动容器)。 start a back-end container
    7. 点击日志标签页,查看 Redis 服务器是否正在以独立模式运行。查看日志标签页
  4. 启动第二个容器

    1. 输入要从镜像仓库中拉取的镜像名称。例如,quay.io/podman-desktop-demo/podify-demo-frontend

    2. 点击 Pull image (拉取镜像),然后点击 Done (完成)。

    3. 点击新添加镜像对应的 Run Image (运行镜像) 图标。

    4. 输入容器名称 python-appenter image name

      注意

      如果默认端口已被占用,您可以在 Port mapping (端口映射) 字段中指定一个不同的端口。

    5. 选择 Networking (网络) 选项卡,输入主机名 redis-server 和 IP 地址 10.88.0.2 以启用与 Redis 服务器的通信。

      注意

      您可以在 redis-server 容器详情页面的 Inspect (检查) 选项卡中找到 IP 地址。

    6. 点击 Start Container (启动容器)。 start a front-end container

    7. 点击日志选项卡,查看应用程序正在端口5000上运行。前端应用程序正在运行

    8. 点击页面右侧的 Open browser (打开浏览器) 图标。

    9. 查看正在运行的前端应用程序。 running front-end application

创建 Pod

您可以使用这两个容器来创建一个 Pod。这样,前端和后端容器应用可以共享资源,例如存储和网络。

使用现有容器创建 Pod

  1. 前往 Containers (容器) 页面。
  2. 同时选择前端和后端容器。
  3. 点击 Create Pod (创建 Pod) 按钮。 create a pod from containers
  4. 点击 Create Pod (创建 Pod)。 copying containers to a pod
  5. 在 Pods 页面上查看新创建的 Pod。
  6. 点击 Pod 的名称,然后点击摘要标签页以查看其摘要。查看 Pod 详情

替代方案:使用 Kubernetes YAML 创建 Pod

您可以为任何现有的 Pod 或容器生成 Kubernetes 清单,并用它来创建本地 Kubernetes YAML 文件。然后,您可以自定义该文件并从中创建一个 Pod。

在创建 Pod 时,您可以选择一个运行时,以指示您是想在 Podman 引擎还是 Kubernetes 集群上运行 Pod。根据选择,您可以在 Pod 组件页面上看到在新环境中运行的新创建的 Pod。

以下过程将创建一个在 Podman 引擎上运行的 Pod。

  1. 前往 Pods 页面。
  2. 点击 Pod 对应的溢出菜单图标。 overflow menu icon
  3. 从下拉列表中选择 Generate Kube (生成 Kube) 选项。
  4. Kube 选项卡中查看 Kubernetes YAML 配置。 kube manifest
  5. 复制配置并将其粘贴到您机器上的一个 YAML 文件中。
  6. 编辑 YAML 配置并保存。
  7. 前往 Pods 组件页面。
  8. 点击 Play Kubernetes YAML (运行 Kubernetes YAML)。 play kubernetes yaml
  9. 从您的机器中选择该 YAML 文件。
  10. 检查 Runtime (运行时) 字段是否设置为 Podman container engine (Podman 容器引擎)。
  11. 点击 Play (运行),然后点击 Done (完成)。
  12. 在同一页面上查看新创建的 Pod。

创建 Pod 后,设置一个本地 Kubernetes 集群来部署该 Pod。

设置本地 Kubernetes 集群

您可以设置一个本地 Kubernetes 集群。一旦集群连接并运行,您就可以在上面部署您的应用程序。

根据您的偏好,使用 Kind 或 Minikube 扩展

  1. 从扩展目录中安装扩展
  2. 创建一个 Kubernetes 集群。请参阅创建 Kind 集群创建 Minikube 集群

一旦创建了 Kubernetes 集群,您可以在 Kubernetes 组件页面上看到一个正在运行的控制平面节点和一个正在运行的 Kubernetes 服务。该页面还会显示集群已连接。

将应用程序部署到 Kubernetes

您可以将应用程序 Pod 部署到具有活动连接的 Kubernetes 集群,并通过服务访问它。此外,作为 Pod 一部分的任何容器都可以部署到 Kubernetes 集群。

  1. 选择您的 Kubernetes 上下文

  2. 前往 Pods 组件页面。

  3. 点击 Pod 对应的溢出菜单图标。 overflow menu icon

  4. 从下拉列表中选择 Deploy to Kubernetes 选项。

  5. 选中该复选框以使用 Ingress 控制器在本地公开服务。在本地公开服务

    注意

    当您在运行镜像时配置自定义端口映射时,您可以从下拉列表中选择一个 Ingress 主机端口。ingress-host-port 否则,您将看不到该选项。

  6. 点击 Deploy,然后点击 Done

验证正在运行的服务

  1. 前往 Kubernetes 组件页面。

  2. 执行以下步骤

    1. 点击服务选项以查看新创建的服务my-pod-5000服务已创建
    2. 点击Ingresses 和 Routes选项以查看新创建的 ingress,my-podingress 已创建
    注意

    使用 Apply YAML (应用 YAML) 按钮直接应用 Kubernetes YAML 文件来创建资源。

Podman Desktop 1.12 发布

·21 分钟阅读
Charlie Drage
软件工程师

Podman Desktop 1.12 发布! 🎉

podman-desktop-hero-1.12

Podman Desktop 1.12 现已发布。点击此处下载

此版本包含

  • Podman 远程:我们现在支持远程 Podman 设置!在 UI 中管理您的远程 Podman 虚拟机。
  • macOS GPU 支持:macOS 上现已支持容器 GPU 访问。libkrun 现在是可选择的提供者类型,以允许启用 GPU 直通。
  • Windows GPU 支持:也想尝试 Windows GPU 支持?Podman 已经支持它,但我们现在在AI Lab 扩展中展示它
  • Podman 5.2.0:这个新版本的 Podman 为 macOS 提供了 GPU 访问权限,以及一系列新功能
  • 浅色模式脱离实验阶段:我们的浅色模式广受好评,我们现在已将其标记为非实验性功能!尽情享受新主题吧。
  • Kubernetes 功能:ConfigMap、Secret 和多文件 Kubernetes YAML 应用现已添加到我们的 Kubernetes 仪表盘中。
  • 改善字体一致性:您会注意到此版本在一致性方面有很大不同,因为我们更新了整个 Podman Desktop 的字体大小。

使用 RHEL 作为 WSL podman 机器

·阅读时间 6 分钟
Jeff Maury
工程经理

红帽提供了一个名为 Image Builder 的工具,允许开发人员以多种格式构建自己的 RHEL 自定义镜像。最近,Image Builder 将 WSL 添加为一个目标,使您可以在 Windows 上将 RHEL 作为 WSL 发行版运行。

这篇文章详细介绍了构建和运行 RHEL WSL 镜像所需的步骤和操作。

本文的目的是描述 RHEL WSL 发行版所需的选项,以便它可以作为 Podman machine 使用。

要将 RHEL WSL 镜像用作 Podman machine,请确保安装了以下软件包:

  • podman
  • podman-docker
  • procps-ng
  • openssh-server
  • net-tools
  • iproute
  • dhcp-client
  • sudo
  • systemd-networkd

幸运的是,除了最后一个软件包外,所有软件包都可从预配置的 RHEL 9 软件仓库中获得。最后一个软件包 (systemd-networkd) 可从 EPEL 9 软件仓库中获得,需要在构建镜像时进行配置。

构建镜像

导航至 image builder

image builder

在右上角菜单中,启用 Preview (预览) 模式。

image builder preview

点击 Add blueprint (添加蓝图) 以打开 Create image (创建镜像) 对话框向导。

image wizard

Image output (镜像输出) 页面,选择以下内容:

  • Release (发行版) 列表中,选择 Red Hat Enterprise Linux (RHEL) 9。
  • Select target environments (选择目标环境) 选项中,选择 WSL - Windows Subsystem for Linux (.tar.gz)
  • 点击 Next (下一步)。
警告

尽管 Release (发行版) 中提供了 RHEL 10 (Beta) 选项,但请注意它不兼容。在撰写本文时,WSL 内核不支持 nftables。

Register (注册) 页面,选择 Automatically register and enable advanced capabilities. (自动注册并启用高级功能)。

  • 从下拉菜单中,选择用于镜像的激活密钥。请参阅创建激活密钥
  • 点击 Next (下一步)。

OpenSCAP 页面,由于 WSL 镜像不支持该功能,请点击 Next (下一步)。

File system configuration (文件系统配置) 页面,选择 Recommended: Use automatic partitioning (推荐:使用自动分区)。

  • 点击 Next (下一步)。

Content (内容) 页面,完成以下步骤以向您的镜像添加额外的软件包:

  • 在 Repository snapshot (软件仓库快照) 步骤中

    • 选择 Use latest content (使用最新内容)。
    • 点击 Next (下一步)。
  • 在 Custom repositories (自定义软件仓库) 步骤中

custom repositories

点击 Create and manage repositories here (在此创建和管理软件仓库) 链接。这将打开一个新标签页。

custom repositories

点击 Add repositories now (立即添加软件仓库)。

add custom repository

点击 Add repositories (添加软件仓库)。

add custom repository

Add custom repositories (添加自定义软件仓库) 页面,选择以下内容:

  • Name (名称) 列表中,输入 EPEL 9。
  • URL 字段中,输入 https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/
  • GPG key (GPG 密钥) 字段中,输入 https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9
  • 点击 Save (保存)。

关闭该标签页并切换回前一个。

  • 在筛选输入字段中,键入 EPEL。
  • 选择 EPEL 9 软件仓库。

custom repository created

点击 Next (下一步)。

  • 在 Additional packages (附加软件包) 步骤中
    • Available packages (可用软件包) 搜索字段中,输入 podman 并点击 按钮。
    • 选择 podman 和 podman-docker 软件包。
    • Available packages (可用软件包) 搜索字段中,输入 procps-ng 并点击 按钮。
    • 选择 procps-ng 软件包。
    • Available packages (可用软件包) 搜索字段中,输入 openssh-server 并点击 按钮。
    • 选择 openssh-server 软件包。
    • Available packages (可用软件包) 搜索字段中,输入 net-tools 并点击 按钮。
    • 选择 net-tools 软件包。
    • Available packages (可用软件包) 搜索字段中,输入 iproute 并点击 按钮。
    • 选择 iproute 软件包。
    • Available packages (可用软件包) 搜索字段中,输入 dhcp-client 并点击 按钮。
    • 选择 dhcp-client 软件包。
    • Available packages (可用软件包) 搜索字段中,输入 sudo 并点击 按钮。
    • 选择 sudo 软件包,然后点击 > 按钮,将软件包搜索结果中显示的已选软件包添加到 Chosen packages (已选软件包) 双列表框中。
    • Available packages (可用软件包) 搜索字段中,输入 systemd 并点击 按钮。
    • 选择 systemd-networkd 软件包。
    • 点击 Next (下一步)。

First boot script configuration (首次启动脚本配置) 页面

  • 点击 Next (下一步)。

Details (详情) 页面

  • Blueprint name (蓝图名称) 中,输入 rhel-wsl。
  • 点击 Next (下一步)。

Review (审查) 页面

  • 点击 Create blueprint and build image (创建蓝图并构建镜像)。

images list

镜像正在构建中。构建完成后,下载链接将可用。点击 Download (.tar.gz) (下载 .tar.gz) 链接并将下载的文件保存到您的本地文件夹之一。

创建 RHEL WSL podman machine

启动 Podman Desktop 并转到 Settings -> Resources (设置 -> 资源) 页面。

images list

在 Podman provider 上,点击 Create new ... (新建...)。

Create Podman machine (创建 Podman machine) 页面,点击 Image Path (镜像路径) 字段的 Browse (浏览) 按钮,并选择从 Image Builder 下载的文件。

create podman machine

点击 Create (创建) 按钮:machine 将被创建并启动。稍后,应会报告操作状态。

podman machine created

来体验一下 RHEL WSL podman machine

转到 Images (镜像) 页面并拉取 httpd 镜像。

pull httpd image

点击 Done (完成)。

images list

通过点击 Run image (运行镜像) 图标来启动镜像。

images list

一旦容器启动,就可以在 localhost:9000 访问 Apache 服务器。

Podman Desktop 1.11 发布

·8 分钟阅读
Charlie Drage
软件工程师

Podman Desktop 1.11 版本发布!🎉

Podman-desktop-1-11-hero

此版本引入了

  • 实验性浅色模式!:我们收到最多请求的功能来了!快来设置中试试我们全新的实验性浅色模式吧。
  • 对 Apple Silicon 的 Rosetta 支持:构建 AMD64 二进制文件的速度几乎与 ARM64 二进制文件相同。
  • Kubernetes 改进:快来看看我们为 Kubernetes 新增的节点和存储卷页面。
  • 改进的 UI:除了浅色模式,您还会注意到我们容器列表页面的更新。
  • 增强的清单支持:现在,构建为清单的镜像会被分组在一起。

Podman Desktop 1.11 现已发布。点击此处下载

Podman Desktop 1.10 发布

·阅读时间 6 分钟
Tim deBoer
架构师

Podman Desktop 1.10 发布! 🎉

Podman-desktop-1-10-hero

此版本引入了

  • 100 万次下载!:哇,我们做到了!
  • 扩展目录:重新设计的扩展页面和目录,让您充分利用 Podman Desktop。
  • Podman 5:现在向所有用户推荐 Podman 5.0.2
  • 多平台构建:一次性为多个平台构建。
  • 扩展 API 改进:对 🦭 Podman Desktop 扩展使用的扩展 API 进行了额外更新。

Podman Desktop 1.10 现已发布。点击此处下载

Podman Desktop 1.9 发布

·10 分钟阅读
Florent Benoit
首席软件工程师

Podman Desktop 1.9 版本发布!🎉

Podman-desktop-1-9-hero

此版本引入了:🦭 一点创新、一股兴奋浪潮和一片充满可能性的海洋!

  • Podman 5! 新用户可使用 Podman 5.0.1(对于 4.x 用户,此为实验性升级)。
  • Podman 4.9.4Podman 4.9.4 现已包含在 Windows 和 macOS 安装程序中。
  • 备份/恢复镜像:将镜像或容器保存到 tar 归档文件并恢复它们。
  • Kubernetes Pod 终端:连接到 Kubernetes Pod 内的终端。
  • 扩展 API 改进:对 🦭 Podman Desktop 扩展使用的扩展 API 进行了额外更新。

Podman Desktop 1.9 现已可用。点击此处下载

Podman Desktop 1.8 发布

·12 分钟阅读
Tim deBoer
架构师

Podman Desktop 1.8 发布! 🎉

Podman-desktop-1-8-hero

我们发布了一个充满海豹魅力的版本!此版本引入了:

  • Podman 4.9.3Podman 4.9.3 现在已包含在 Windows 和 Mac 安装程序中。
  • Kubernetes 浏览器:用于处理 Kubernetes 集群的高级 UI 和新工具。
  • 全局入门引导:通过一系列引导式工作流程,轻松配置和设置您的环境。
  • 学习中心:为开发者发现新的用例和功能。
  • 扩展 API 改进:对扩展 API 的又一次重大更新,为 🦭 Podman Desktop 的扩展带来更多好处。
  • 增强的构建、Pod 列表和故障排除页面:支持为不同平台构建,升级了 Pod 视图等。

Podman Desktop 1.8 现已发布。点击此处下载


发布详情

Podman 4.9.3

🦭 Podman 4.9.3 包含针对我们用户报告的稳定性和可靠性问题的关键修复——特别是如果您正在使用 Apple Silicon 架构。如果您一直遇到困难,我们强烈建议您更新!

Kubernetes 浏览器

在过去的版本中作为实验性功能逐步引入,我们已准备好扩展我们的功能,以帮助开发人员从容器过渡到 Kubernetes。在此版本中,我们引入了一组新功能,使开发人员能够使用更多 Kubernetes 资源,从而对应用程序提供更精细和交互式的控制。

Podman Desktop 🦭现已推出新的 Kubernetes 资源管理器,除了对现有 Pod 的支持外,还能够处理部署、服务、Ingress 和路由。对于这些资源中的每一个,Podman Desktop 🦭都提供集群上资源状态的实时信息。从此概述页面的右上角,您还可以点击“应用 YAML”以在集群上创建或更新资源,类似于“kubectl apply -f”,并查看当前的连接状态。

Deployments Overview

就像处理本地容器或镜像一样,您可以点击查看摘要、检查和 Kube (YAML) 页面上的更多详情。

Deployment Summary

发现问题?您可以直接从 Kube 选项卡编辑并应用更改。

Deployment Kube YAML

🦭 Podman Desktop 持续弥合差距和差异,使使用容器的开发者能够通过高效的工作流程从本地工作站定位 Kubernetes。这一切都建立在一些已有的出色功能之上:

  • Podman 的原生 Kubernetes 支持
  • Podify - 将容器转换为 Pod
  • 使用 Minikube 和 Kind 扩展设置本地 Kubernetes 环境
  • 部署到 Kubernetes 并将本地镜像从 Podman 推送到 Kubernetes 环境
  • 管理 Kubernetes 上下文
  • 连接到远程 Kubernetes 集群

全局入门引导

通过引入新的基于向导的入门流程,配置和设置本地环境变得更加容易。在此流程中,开发人员可以选择他们需要的不同工具,Podman Desktop 🦭将引导他们完成每个工具的配置和设置。

全局入门流程允许开发人员配置 Podman、Compose 和 kubectl(用于使用 Kind 和 Minikube 或远程 Kubernetes 环境)。这使得过渡到 Podman Desktop 🦭变得更简单,因为任何所需的依赖项都会自动配置。

Global Onboarding

学习中心

在此版本中,我们已在仪表板上添加了学习中心,使开发人员能够发现、学习和扩展他们在容器化相关主题方面的知识。这些指南方便易用,涵盖了从学习如何容器化现有应用程序到发现 Podman Desktop 🦭的最新功能以及如何最佳使用它们的主题。

Learning Center

扩展 API 改进

我们继续投入大量时间添加新的扩展 API,以便为即将推出的扩展提供更多功能和与 🦭 Podman Desktop 更好的集成。

  • 拆分 getMatchingPodmanEngine #6160
  • 创建容器时添加 HealthCheck 参数 #5981
  • 向扩展暴露 listPods #5864
  • createPod 的标签 #5862
  • 允许在 Pod 内创建容器 #5848
  • OpenPod 应重定向到 Pod 的视图 #5846
  • 通过缺失的参数增强 createContainer API #6011
  • 允许扩展使用 openDialog/saveDialog #6009
  • 允许在贡献的操作中使用自定义图标 #5995
  • 添加缺失的类型 #6213
  • 允许从扩展导航到特定的 webview #5899
  • 向扩展暴露 stopPod 和 removePod #5898
  • 为打开/保存对话框使用新的 API #6051#6050#6049
  • 扩展 Podman Desktop API 构建镜像参数 #5882
  • 允许扩展统计容器 #6211

其他值得注意的增强功能

此版本我们添加了超过 40 个功能,以下是一些其他亮点:

  • 改进 Podman Desktop 更新提醒 #6068
  • 在故障排除中添加收集和下载日志按钮 #5119
  • 为 Linux 启用 podman machine #5902
  • 多重删除动画 #5717
  • 镜像删除动画 #5709
  • 卷删除动画 #5707
  • 打开 OpenShift 路由 #5560
  • 添加打开已创建 Pod 详情的功能 #4499
  • 部署到 kubernetes 集群时使用 https #5824
  • 仪表盘页面的入门轮播 #5142
  • 删除对象时添加确认对话框 #5445

我们还在实现浅色模式方面取得了重大进展:

  • 为反转内容使用主题颜色 #6029
  • 为次要导航使用主题颜色 #6028
  • 为全局导航应用主题颜色 #6027
  • 为标题栏应用主题颜色 #6025
  • 一致的关闭按钮 #6060
  • 在快速选择中使用组件 #6057
  • 为 webview 提供 CSS 颜色 #5963
  • 将颜色发布到应用程序的样式中 #5962
  • 允许扩展通过颜色集贡献主题 #5961
  • 颜色存储 #5960
  • 包含颜色注册表 #5958
  • 添加实用方法以获取主题值 #5947
  • 当操作系统更改颜色时发送事件 #5946
  • 清理 dark: 前缀颜色 #5944
  • 将调色板提取到其自己的文件中 #5931
  • 输入组件 #5904
  • 输入错误,在运行镜像时使用输入组件 #5988
  • 在构建镜像时使用输入 #5986
  • 为代理设置使用输入 #5943
  • 为注册中心使用输入 #5939
  • 从容器创建 Pod 时使用输入 #5935
  • 在扩展页面中使用输入组件 #5934
  • 在创建卷时使用输入 #5933
  • 在重命名镜像时使用输入 #5964
  • 在部署到 Kube 时使用复选框组件 #6030

值得注意的错误修复

我们在此版本中修复了大量错误,包括以下内容:

  • 在将容器复制到 Pod 时复制挂载的卷 #5640
  • 更改“卷”和“容器”列表上“创建”按钮的顺序 #6092
  • 在上下文值更新时刷新引导项 (#4597) #6173
  • 在 informer 连接错误时提供更好的日志 #6158
  • 网站:替换损坏的链接 #6111
  • 居中空屏幕 #6077
  • 打开本地文件夹/文件时不再请求确认 #5743
  • 强制面包屑垂直对齐 #5741
  • 认证页面中的长用户名 #5737
  • 用于更新任务名称的 message 属性 #5731
  • 导航项 UI 修复 #5886
  • 重新显示注册中心图标 #5843
  • 检查路由 TLS 以使用 http 或 https #5825
  • 白色工具提示 #5887
  • 限制注册中心用户名字段宽度 #5718
  • 在 Linux 上移除 Docker 兼容性警告和按钮 #5903
  • 容器的镜像使用情况 #5663
  • 删除当前上下文时应更改/更新 #5819
  • 不要折叠侧边栏中的类别 #5727
  • 使 localhost 成为 env.openExternal 调用的有效域 #5716

文档

除了新版本的 🦭 Podman Desktop,文档也进行了以下改进:

  • containerEngine API 中与容器和镜像相关的方法 #5891
  • 移除了使用 OpenShift Local 安装 Podman 的说明 #6070
  • 记录镜像检查器提供程序 API #5813
  • 添加 withProgress API 文档 #5736
  • 添加了指向故障排除页面的链接 #5734
  • 在 macOS M1/M2/M3 上的安装故障排除 #5708
  • 删除卷 #5707
  • 添加了 从另一个 WSL 实例访问 Podman (配置, 验证) #5706
  • 使用 typedoc 生成 API 文档 #5705

社区致谢

🎉 我们要衷心感谢所有帮助 🦭 Podman Desktop 变得更好的人。在此版本中,我们收到了以下人员的拉取请求:


最后说明

已修复的问题

本次发布中修复的完整问题列表可在此处查看。

下载地址

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。

Podman Desktop 荣获 2024 DEVIES 奖

·2 分钟阅读
Cedric Clyburn
开发者大使

我们很荣幸地宣布 Podman Desktop 荣获 2024 DEVIES 奖 容器与 Kubernetes 类别奖项。该奖项证明了 Podman Desktop 团队和更广泛的开源社区在帮助开发人员方面所做的努力的有效性。Podman Desktop 提高了开发人员容器工作流的效率,并提供 将应用程序从容器轻松迁移到 Kubernetes(领先的开源容器编排平台)的功能。

“Podman Desktop 去年才正式发布,但社区反响非常热烈,令人无比欣慰。我们非常自豪能获得这一卓越认可,它颂扬了塑造容器开发未来的热情、承诺和创新,并得到了红帽所支持的充满活力的开源标准的支持。”Podman Desktop 团队的产品经理Stévan Le Meur表示。

hero

什么是 DEVIES 奖?

DeveloperWeek 颁发的 DEVIES 奖项旨在表彰软件开发社区中最具创新性和影响力的工具、平台和技术。Podman Desktop 荣获“容器与 Kubernetes 最佳创新奖”,凸显了其对行业的重要影响以及在彻底改变开发人员构建、交付和运行应用程序方式方面的作用。DEVIES 奖项获奖者由独立的行业领先的 DevNetwork 顾问委员会从数百名提名者中选出。

与我们一同庆祝!

我们很高兴能于 2024 年 2 月 21 日至 23 日在加利福尼亚州奥克兰以及 2024 年 2 月 27 日至 29 日(线上)在 DeveloperWeek 2024 颁奖典礼上领取此奖项。此外,红帽开发人员布道师 Cedric Clyburn 将主持一场关于 Podman Desktop 的会议,题为“从容器到 Pod 再到 Kubernetes——帮助您的开发环境!”,其中将全面介绍 Podman,演示 Podman Desktop 体验,并展示一个从容器到 Pod 最终到 Kubernetes 的多层应用程序!

最后,如果不包括并承认这个奖项是由整个 Podman Desktop 贡献者社区赢得的,那将是极大的疏忽!我们还要感谢 DevNetwork 顾问委员会和 DeveloperWeek 颁发这个荣誉奖项,并提供机会与更广泛的开发人员社区分享 Podman Desktop 的创新。

在 macOS 和 Windows 上解锁 WebAssembly

·12 分钟阅读
Florent Benoit
首席软件工程师

在 macOS 和 Windows 上无缝运行 WebAssembly/Wasm 二进制文件

您最近可能听说了 Wasm 和 WASI 的令人兴奋的消息。想象一个世界,您可以轻松运行 Wasm 二进制文件,并使用开放容器计划 (OCI) 容器镜像分发它们——一个可在多种架构上部署的单一镜像。

尽管概念看起来很简单,但完成这项任务却非常具有挑战性,尤其是在 macOS 和 Windows 上。复杂性来自于额外运行的 Linux 虚拟机。这台机器需要正确设置所有依赖项和先决条件。

等待已经结束。我们的博文揭示了解决方案,指导您在 macOS 和 Windows 上启用 Wasm 工作负载的过程。

hero

Podman Desktop 1.7 发布

·8 分钟阅读
Tim deBoer
架构师

Podman Desktop 1.7 发布!🎉

Podman-desktop-1-7-hero

我们发布了一个充满海豹魅力的版本!此版本引入了:

  • Podman 4.9.0: Windows 和 Mac 安装程序现已包含 Podman 4.9.0
  • 扩展 API 改进:对扩展 API 的重大更新,为 🦭 Podman Desktop 的扩展带来了更多可能性。
  • 实验性 Kubernetes UI:抢先体验更高级的 Kubernetes 集群操作 UI。
  • 增强的构建、Pod 列表和故障排除页面:支持为不同平台构建,升级了 Pod 视图等。

Podman Desktop 1.7 现已发布。点击此处下载


发布详情

Podman 4.9

🦭 Podman 4.9 包含了针对用户报告的稳定性和可靠性问题的关键修复。如果您之前遇到了问题,我们强烈建议您更新!

如果您使用的是 Mac M3,我们知道 Podman 存在一个关键问题,预计很快会更新以解决此问题:#21353 - 更新到新 QEMU(基于#1990 - M3 上的 QEMU 问题)。如果您遇到此问题,这里有一个那里有解决方法。

扩展 API 改进

此版本我们花费了大量时间添加新的扩展 API,以赋予即将推出的扩展更多功能,甚至更好地集成到 Podman Desktop 🦭中。我们增加了对全页 Web 视图、镜像徽章、图标、导航 API 以及从容器引擎访问更多功能的 API 支持

  • UI 中的 Webview #5594
  • 为扩展添加 webview API #5592
  • 允许扩展列出 webview #5628
  • 创建容器但不启动 #5643
  • 公开 create/start Pod 和 replicatePodmanContainer #5648
  • 为扩展公开创建/列出/删除卷的功能 #5598
  • 向 API 添加 getImageInspect #5596
  • 为镜像图标新增贡献点 #5543
  • 添加 BuildOption #5533
  • 向镜像构建方法添加平台参数 #5501
  • 公开构建镜像方法 #5500
  • 导航 API #5558
  • 通过扩展为镜像列表/详情注册徽章 #5557
  • 从私有注册中心安装扩展 #5473

实验性 Kubernetes UI

过去几个月我们一直在努力扩展对 Kubernetes 的支持。这项支持尚未完全成熟,但如果您正在使用 Kubernetes 集群,我们很乐意开始收集您对发展方向的反馈!

要“尝鲜”并试用,请前往“设置 > 首选项 > Kubernetes”,并启用实验性选项。

Kubernetes Preference

这将在主导航栏中添加三个新项目,允许您查看部署、服务以及 Ingress 和路由。

Kubernetes Deployments Kubernetes Services Kubernetes Ingresses &amp; Routes

在此版本中,您可以点击部署和服务来查看更多详情(如摘要、检查和 YAML 标签页),但目前尚不支持 Ingress 或路由。

我们希望您能顺利使用,但也请通过提交 Github issue 让我们知道您还希望看到哪些功能。

增强的构建、Pod 列表和故障排除页面

构建镜像时,您现在可以选择为哪个平台构建镜像。

Build platform

我们已将 Pods 视图升级为与镜像和卷相同的表格组件。这允许排序和更好的列缩放。

Pods table

遇到问题想重新开始?故障排除页面已切换到标签页,并提供了一个选项来清除您现有的安装。

Troubleshooting Purge


其他值得注意的增强功能

本次发布我们增加了超过 40 个功能,以下是一些其他亮点

  • 按 Esc 退出引导流程 #5612
  • 快速选择不区分大小写的过滤 #5582
  • 添加 UI 徽章组件 #5522
  • 扩展构建镜像中的连接输入类型 #5499
  • 导航栏区域 #5449
  • 改进认证提供者页面 #5424
  • 添加 groupContributions 逻辑 #5415
  • 添加在开发模式下选择如何打开开发者工具的选项 #5274
  • 表单进度 #5253
  • 改进的提供者卡片 #5013

值得注意的错误修复

我们在本次发布中修复了超过 25 个错误,包括以下内容

  • 在将容器复制到 Pod 时复制挂载的卷 #5640
  • 添加缺失的 `Labels` 属性 #5632
  • 修复仅创建容器时 UI 不刷新的问题 #5619
  • 快速选择过滤器会移除所选内容 #5613
  • 为 createContainer API 添加缺失的类型 #5504
  • 使用 window.showMessageBox 而不是自定义模态框 #5421
  • 添加 cleanupSupport 属性 #5309
  • 空屏幕默认重置过滤器 #5307
  • 不获取 compose 的预发布版本 #5296
  • providerinfo 徽章 #5268
  • 镜像存在时长更新时不要刷新镜像列表 #5267
  • 重命名 kubectl 扩展 #5255
  • 首先尝试在用户路径中搜索 kubectl #5248
  • 注销扩展时处理 wsl2 命令 #5246
  • 从归档加载镜像时处理事件 #5240
  • 编辑 Podman machine 仅支持 macOS #5239
  • 改进默认贡献操作图标 #5236
  • 主/次按钮颜色应为白色 #5232
  • 更新 Podman 时禁用通知 (#5228) #5229
  • 允许表格列指定溢出 #5222
  • ProgressImpl 正确地中间件任务以设置正确的结果状态 #4342

文档

除了新版本的 🦭 Podman Desktop,文档也进行了以下改进:

  • 更新 compose 博客文章链接 #5547
  • 因存在另一个实例而应用终止时的消息 #5348
  • 记录引导 ID 规则 #5211
  • 多平台扩展 #5205
  • 关于 Compose guestbook 应用程序的博客文章 #5033
  • 重构了设置容器注册中心 #4965

社区致谢

🎉 我们要向所有帮助 🦭 Podman Desktop 变得更好的贡献者(没错,就是你,Anders!)表示衷心的感谢。在这次发布中,我们收到了以下人员的拉取请求


最后说明

已修复的问题

本次发布中修复的完整问题列表可在此处查看。

下载地址

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。

Podman Desktop 1.6 发布

·15 分钟阅读
Stevan Le Meur
产品经理

Podman Desktop 1.6 版本发布!🎉

Podman-desktop-1-6-hero

此版本引入了

  • Minikube 特色扩展:Minikube 扩展,用于在容器中创建本地 Kubernetes 集群。
  • Podman 4.8.2:Windows 和 Mac 安装程序现已包含 Podman 4.8.2
  • 命令行工具设置页面:管理和更新您的 CLI 工具。
  • Kubernetes 上下文管理器:浏览您所有的 Kubernetes 上下文,设置默认上下文并移除未使用的上下文。
  • 可编辑的 Podman Machine (适用于 MacOS):轻松调整和重新配置 Podman 运行时环境。
  • 容器和 Pod 列表的过滤器:专注于您正在使用的容器和 Pod。
  • 卷和镜像列表的排序功能:根据您的首选标准对卷或镜像进行排序。
  • 容器和 Pod 列表中的环境列:轻松捕获容器或 Pod 正在运行的环境。
  • 扩展 API 改进:对扩展 API 的另一组改进,为 🦭 Podman Desktop 的扩展带来了更多可能性。

Podman Desktop 1.6 现已可用。点击此处下载


发布详情

对于需要本地运行 Kubernetes 并为开发和实验目的重现接近生产环境的开发人员,Podman Desktop 允许用户轻松地在本地机器上设置该环境。有两个扩展提供在本地配置开源 Kubernetes 集群的功能,您可以选择 KindMinikube

Minikube 扩展允许您在工作站上安装 Minikube,并在本地容器中设置 Kubernetes 集群!是的,您没看错——在容器中,类似于 Kind 的工作方式。优点是它更轻巧、启动更快。使用 Minikube 的一个优点是,您可以使用 Podman 在本地构建镜像,并自动在本地 Kubernetes 集群中获取它们——这将加快您测试应用程序时的周转时间。如果您想了解更多信息,请阅读以下博客文章

Minikube-feature-extension

命令行工具配置:Compose 和 Kubectl

通过在“设置”中新增一个部分来管理命令行工具,配置和管理您的设置变得更加容易。在 Podman Desktop 中,扩展可以列出对其用户有帮助或使用已安装扩展所需的命令行工具。

Podman Desktop 中有两个命令行工具,可以让您查看它们是否已安装或需要更新:

  • 用于运行 'podman compose' 命令的 Compose 二进制文件。
  • 用于与 Kubernetes 集群交互的 kubectl。

cli-tools

在设置中,您可以看到已安装的命令行工具及其版本——当有新版本可用时,您会收到一个小通知,让您轻松更新到该版本。

Compose-Update

Kubernetes 上下文管理器

我们正在推出一个可从“设置”访问的新屏幕,它允许您轻松管理您的 Kubernetes 上下文。Podman Desktop 已经提供了状态栏中方便的上下文切换器,但是当您需要使用多个 Kubernetes 环境时,通常会得到一个庞大而长的 Kubernetes 上下文列表。

新的 Kubernetes 上下文界面让您可以轻松查看所有已注册的 Kubernetes 上下文。您可以使用该界面清理已注册的上下文,或设置当前(默认)上下文。

Kubernetes Contexts List

可编辑的 Podman Machine

Podman 机器是一种专门为在 Mac 和 Windows 上运行 Podman 容器而设计的虚拟环境。它允许用户在隔离和受控的环境中管理和操作容器化应用程序。创建 Podman 机器时,您需要配置其设置:内存、CPU 和磁盘大小。

我们收到了关于即时重新配置 Podman 机器的反馈。现在 macOS 用户可以实现这一点,这在您开始使用某个环境,然后需要根据新需求和希望在 Podman 环境中运行的容器进行扩展时特别有用。

Editable podman machine

您会注意到我们改进了用于配置 Podman machine 选项的滑块——并且还引入了直接输入数值的方式。

容器和 Pod 的选项卡/过滤器

在迭代应用程序开发时,能够快速识别正在使用的容器和 Pod 至关重要。因此,我们在容器和 Pod 列表的顶部添加了过滤器,让您可以轻松查看所有容器/Pod、仅运行中的容器/Pod 或仅停止的容器/Pod。

Filters for containers and pods

卷和镜像列表的排序功能

卷和镜像列表得到了改进,现在可以根据您选择的标准进行排序。例如,您可以按镜像大小进行筛选——这在您想要清理环境时可能很方便。

Sorting for Volumes and Images

容器和 Pod 列表上的环境列

Podman Desktop 能够与多个提供商合作:它可以与多个容器引擎和多个 Kubernetes 环境合作。为了更容易识别容器和 Pod,并根据它们运行的环境进行区分,我们正在容器和 Pod 列表中引入一个新的环境列来显示徽章。

Environment Column

Pod 中运行的容器可见性更佳

Pod 列表已得到优化,以便更轻松地查看和访问其中运行的容器。每个容器现在都有一个点,您可以将鼠标悬停在每个点上以显示容器的信息——如果您单击它,您将能够访问容器的详细信息。

Visibility for containers in Pods

扩展 API 改进

🦭 Podman Desktop 扩展 API 获得了许多改进,包括:

  • 解释如何为扩展创建入门工作流的文档 #4837
  • 记录了扩展如何挂钩到 UI #4633
  • 记录了如何实现 API 客户端 #4636
  • 镜像检查器扩展 API #4662
  • 添加了用于注册 CLI 更新器的 API #5064

其他值得注意的增强功能

  • 显示容器连接类型和端点 #5098
  • 为 Pods/容器添加环境列 #4583
  • 在扩展列表中显示扩展图标 #5101
  • 引入了 UI 图标图像组件 #5117
  • 将图标添加到 extensionInfo #5089
  • 在 RunOptions 上添加了编码选项 #4942
  • 引入了外观属性,但目前仅支持深色模式 #4887
  • 默认表格排序 #4860
  • 在任务管理器中显示已完成入门流程的通知 #4811
  • 当仪表板有新内容时添加紫色圆点 #4782
  • Argos CI:引入 Argos CI 以跟踪和检测网站上的视觉回归
  • 添加了命令面板:添加启用属性 #4630
  • 添加了遥测和使用数据的文档 #4618
  • 引入了表格组件 #4545
  • 添加了中止构建镜像的功能 #4538
  • 在命令面板中添加了对类别的支持 #4531
  • 将 flatpak 升级到 org.freedesktop.Platform 版本 23.08 #3968
  • 将打开暴露的 URL 添加到 Pod 详情 #3762

值得注意的错误修复

  • 修复:如果断开连接,则重新连接到 /events #4809
  • 修复:重启机器后重置 loggerhandlerKey #5168
  • 修复:修复:用错误的标志创建了 podman machine #5178
  • 修复:如果配置无效,避免崩溃 #5182
  • 修复:扩展安装检查架构和操作系统 #5191
  • 修复:使用 URL 进行代理规范并添加验证 #4825
  • 修复:不更改 markdown 按钮的颜色和下划线 #5138
  • 修复:当连接被移除时不要重新连接 #5131
  • 修复:表头不应允许文本选择 #5118
  • 修复:为链接添加样式 #5108
  • 修复:launch.json 引用了错误的脚本 #5094
  • 修复:不链接到 k8s 集群服务器 5087
  • 修复:将完整的 imageInfo 传递给检查函数 #5069
  • 修复:容器选项卡应与 Pods 匹配 #5057
  • 修复:恢复禁用按钮的样式 #5056
  • 修复:响应式地更新当前上下文 #5055
  • 修复:使 ProviderResultPage 不更改输入值 #5030
  • 修复:为表格添加 rowgroup #5005
  • 修复:为路由对象添加 path 属性 #4981
  • 修复:移除错误的哈希标记 #4971
  • 修复:检查扩展文件夹是否包含 package.json #4964
  • 修复:重构列表 UI 组件 #4953
  • 修复:Compose 入门流程的 succeeded/completed 状态 #4947
  • 修复:从 markdown 按钮渲染中移除 flex 类 #4934
  • 修复:在 Windows 上使用中文作为系统语言时无法读取 wsl 版本 #4918
  • 修复:保留自动启动设置 #4879
  • 修复:使用 vi.waitUntil 代替带等待 promise 的循环 #4861
  • 修复:在 Windows 上执行 compose 命令时的 docker 主机 #4855
  • 修复:在 UI 中合并了 compose 部署到 kube 的页面 #4827
  • 修复:使用 URL 进行代理规范并添加验证 #4825
  • 修复:如果断开连接,则重新连接到 /events #4809
  • 修复:移除 PatternFly 后,移除固定高度 #4804
  • 修复移除 PatternFly 后的背景颜色 #4803
  • 修复:报告已停止机器的指标 #4787
  • 杂项:更新到 docusaurus v3.0.0 #4764
  • 杂项:移除 patternfly #4762
  • 修复:避免发送遥测使用情况,因为此方法每 5 秒调用一次 #4692
  • 修复:开发模式下 roots.exe 的位置 #4654
  • 修复:如果任何端口被占用,则禁用创建/启动容器 #4637
  • 修复:修复构建镜像测试中的设置 #4625
  • 修复:查找一个空闲端口 #4616
  • 修复:减小仪表板上提供商卡片的大小 #4615
  • 修复:缩短文档导航部分的标题 #4613
  • 修复:如果容器引擎操作在详情页失败,则报告错误 #4556
  • 修复:移除上一个/下一个栏 #4548
  • 修复:缩减网站页脚 #4546
  • 修复:处理不再是 JSON 数组对象的 compose format json #4540
  • 修复:如果正在推送,则禁用推送到 kind 菜单项 #4530
  • 修复:检查自签名证书消息,并在编辑注册表密码时使用不安全参数 #4523
  • 修复:为摘要页面添加自动滚动 #4504
  • 修复:分析扩展时报告错误 #4380
  • 修复:允许编辑构建容器文件 #4471
  • 重构:更新了 compose 入门安装流程 #4479
  • 重构:从状态栏移除 compose #4492

文档

伴随 🦭 Podman Desktop 新版本,文档也得到了以下改进:

  • 按提供商重新组织文档导航 #4558
  • 为 Windows 开发添加了 vsc 运行时依赖 #5091
  • 显示 lima podman socket 的位置 #5090
  • 修复了 releases 的 URI 中的拼写错误 #4909
  • 解释如何为扩展创建入门工作流 #4837
  • 使 lima 能够同时提供两者 #4789
  • 关于 minikube/共享镜像的博文 #4735
  • 从 windows 故障排除中移除重复文本 #4652
  • 添加实现 api 客户端的步骤 #4636
  • 修复了 limactl 的主要 lima 命令 #4623
  • 实施改进后对 Lima 提供商进行清理 #4622
  • 更新关于自动合并的文档 #4519
  • 为注册表文档使用标准操作系统选项卡 #4497
  • 修复了 mahine -> machine #4495
  • 为注册表部分添加了截图并修复了格式 #4472

社区致谢

🎉 我们想对所有帮助使 🦭 Podman Desktop 变得更好的人表示衷心的感谢。在此版本中,我们收到了以下人员的拉取请求:


最后说明

已修复的问题

此版本中修复的完整问题列表可在此处查看。

下载地址

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。

与 Kubernetes 集群共享您的本地 podman 镜像

·9 分钟阅读
Florent Benoit
首席软件工程师

作为开发者,我们不断改进和完善我们的应用程序。我们面临的挑战之一是在使用容器镜像和 Kubernetes 部署/Pod 时快速迭代。

例如,当我们在 Kubernetes Pod 中尝试一个新的镜像时,该镜像需要在一个私有/公共注册表上或者在 Kubernetes 集群的节点上可用。有时我们需要调用额外的命令,例如kind load docker-imageminikube cache add ,或者首先将镜像发布到第三方注册表。

您会同意,在 Kubernetes Pod 中尝试新镜像应该像构建镜像本身一样无缝。

在这篇博文中,我们将探讨使用 Podman Desktop 简化 Kubernetes 中镜像迭代过程的最佳实践。

hero

Podman Desktop 1.5 发布

·12 分钟阅读
Máirín Duffy
用户体验设计师

Podman Desktop 1.5 版本发布!🎉

在 Podman Desktop 的这个版本中,我们引入了**一个新的上手引导功能**,希望它能赢得您的 🦭 认可!但是等等……还有更多精彩内容!

  • 上手引导:对 PodmanCompose 的引导式设置与配置
  • Podman 4.7.2:Windows 和 Mac 安装程序现已包含 Podman 4.7.2
  • 命令面板:通过一个新的键盘驱动的命令面板,轻松访问各种命令
  • 扩展了 Kubernetes Pod 的“摘要”选项卡:在 Pod 的“摘要”选项卡中深入了解 Kubernetes Pod 的扩展详细信息
  • 支持环境文件:为新容器规划环境变量,以便在创建时访问
  • 设置区域增强:通过改进的 Docker 兼容模式控件,让您更好地进行配置
  • 改进状态变化的用户体验:通过改进的状态可视化指示,不再需要猜测容器状态
  • 扩展 API 改进:对扩展 API 进行了大量改进,使 🦭 Podman Desktop 的扩展能提供更多功能

Podman Desktop 1.5 现已可用。点击此处下载

Podman-desktop-1-5-hero


发布详情

上手引导

我们引入了一项新功能,为特定的 🦭 Podman Desktop 扩展的初始设置提供引导流程。1.5 版本包含了两个新的上手引导流程:Podman 和 Compose。

要启动 Podman 引导流程,您可以从仪表板通知中点击“设置”按钮开始:podman-onboarding-start podman-onboarding

访问设置 > 资源屏幕,然后点击 Compose“设置...”按钮以启动 Compose 引导:compose-onboarding-start compose-onboarding

命令面板

现在提供了一个新的、搜索驱动的命令面板,可快速访问 Podman Desktop 🦭中可用的各种命令。您可以通过按 F1 键试用此新工具。#4081#3979

Kubernetes Pod 的“摘要”标签页已扩展

Kubernetes Pod 现在在“摘要”选项卡下提供更全面的信息,包括网络、卷、环境变量和其他关键元数据。

支持环境文件

从镜像列表创建容器时,现在有一个选项可以提供一个环境文件,为新容器设置环境变量。#4026 && #4025

设置区域增强

Docker 兼容性启用或禁用的用户体验得到了改善,在设置 > 首选项屏幕中新增了一个条目,其中包括上下文指导。#4093

改进状态变化的用户体验

容器、Pod 和用户界面中其他对象的状态变化的用户体验得到了改善,具有清晰的状态消息和改进的动画视觉状态变化指示。#4056

扩展 API 改进

🦭 Podman Desktop 扩展 API 获得了许多改进,包括:

  • 除了从扩展推送和列出镜像外,现在还可以从 🦭 Podman Desktop 扩展拉取镜像。#4155

  • Podman Desktop 🦭 扩展 API 已增强,既能够列出镜像和网络,又能够创建容器和网络。#4172

  • 🦭 Podman Desktop 扩展现在有了一致的方式来运行管理任务。#4049

  • 扩展现在能够注册自定义的 Kubernetes 配置生成器。#3970

  • 扩展向 UI 菜单添加命令的功能已得到扩展;以前,对于操作菜单,它只在镜像列表屏幕上可用。现在,扩展也可以向容器列表屏幕上列出的项目的操作菜单添加命令。#3947#3963

  • 扩展获得了根据特定条件在 UI 中贡献菜单项的能力。#3959

  • 现在,“设置 > 首选项屏幕中显示或隐藏属性的逻辑已增强。#4159


其他值得注意的增强功能

  • 将镜像加载到 Kind 的进度现在作为任务在任务管理器中可见。#4061

kind-progress-task

  • 现在可以在创建后立即启动一个新的 Podman 机器,或者您可以创建它并等待以后再启动。由您决定!#4046

podman-start-now-or-later

  • Podman machine 和 Kubernetes 提供程序创建表单的外观和感觉已更新,与用户界面中的其他表单保持一致,并修复了一些小错误。#4317

Updated provider creation forms

  • 当搜索过滤器没有匹配结果时显示为空屏幕消息,现在提供了一条特定于过滤器匹配的消息,包括具体的过滤器术语和用于清除过滤器的明确按钮。以前,该屏幕显示的是一条关于如何创建屏幕上显示的类型的新对象的通用消息,这导致对系统状态产生了一些混淆。#3988
  • 现在支持为图标添加旋转动画。#4188

  • 任务管理器现在提供了一种新的不确定进度条类型;这适用于为 API 未提供详细状态信息的动作提供有限状态。#4016

  • 为了以管理员身份进行身份验证以执行管理任务,🦭 Podman Desktop 现在为 macOS 提供了 Touch ID 支持。#4050

touchID-support

  • 增加了通过 tty 连接到容器交互式终端的支持。#3900

  • 现在,当 Podman Desktop 🦭 启动时,哪些容器/Pod 提供程序将自动启动更清晰。以前,自动启动既有全局设置,也有每个提供程序的设置。通过删除全局设置,它已得到简化。#3840

  • 文档的“使用容器”部分已重新编写和改进。#3951


值得注意的错误修复

  • 禁用注册表的命令没有阻止后续从已禁用注册表拉取镜像。此问题已得到纠正。#4183

  • 一些位于网络代理后面的用户无法完成涉及下载在线资源的工作流。获取这些资源的机制已修复为兼容代理,以解决此问题。#3994

  • 正在进行删除过程的 Kubernetes 中运行的 Pod 的状态现在可以在 🦭 Podman Desktop UI 中准确反映。#3877

  • 镜像详情页面总是将镜像列为“未使用”,即使它正在被使用。此问题已得到纠正。#3985

  • 以前,删除特定镜像标签会导致所有具有相同镜像 ID 的标签都被删除。此问题已修复,现在只会删除选定的镜像标签。#3837

  • 由于编码错误,无法查看某些远程 Kubernetes 集群 Pod 的详细信息。#4371

  • 错误日志以前与它们所应用的动作分开跟踪。现在,kind 集群创建失败#4427和 Compose 安装失败#4407的此问题已得到解决。

  • 对于 Linux 用户,Podman Desktop 🦭 以前通过 Flatpak 安装时不会出现在“开发”菜单下;它出现在“实用工具”下。现在 Podman Desktop 🦭 出现在“开发”菜单下。#3911

  • Podman Machine 名称不再以“Podman Machine”字符串为前缀。#3878

touchID-support

  • Pod 和容器的初始操作状态无论实际状态如何都显示为“正在启动”;此问题已得到纠正。#3889

  • 调整应用程序窗口大小不再使容器终端的最后几行不可见。#3993

  • 解决了附加到容器的终端中长行响应不正确的终端行为问题。#3955

  • 运行镜像表单上的一个间距问题已得到纠正。#4089

  • 容器列表上的“podify”图标和按钮在 1.4 版本中异常大。此回归问题已在此版本中得到纠正。#4122

  • Windows 用户从 Docker 迁移的说明中的一个错误已得到纠正。#4157


社区致谢

🎉 我们想对所有帮助使 🦭 Podman Desktop 变得更好的人表示衷心的感谢。在此版本中,我们收到了以下人员的拉取请求:


最后说明

已知问题

我们有一个讨论区主题,其中发布了此版本的已知问题。如果您遇到问题,请在提交错误之前检查此列表——如果已经存在一个问题,它可以为您节省提交的时间和麻烦,并且可能在问题中发布了解决方法。

已知问题:Podman Desktop 1.5.2

已修复的问题

此版本中修复问题的完整列表可在此处找到。

下载地址

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。

Podman Desktop 1.4 发布

·5 分钟阅读
Jeff Maury
工程经理

Podman Desktop 1.4 发布!🎉

这主要是一个错误修复版本,修复了 UI 中的各种问题,但和往常一样,我们也增加了一些新功能。

  • Podman 4.6.2:Podman Desktop 1.4 中包含了 Podman 4.6.2
  • Windows Arm64:原生的 Windows on Arm64 安装程序和二进制文件
  • 端口范围映射:启动容器时可以映射一个端口范围
  • 终端用户体验改进:通过 SSH 连接到容器时,终端会话将保持持久
  • 卷创建:可以从 页面创建卷
  • Bash 支持:如果可用,终端现在将使用 bash

Podman Desktop 1.4 现已发布。点击此处下载

Podman-desktop-1-4-juggling


发布详情

端口范围映射 #3654

启动新容器时,您现在可以在主机和容器之间映射一个端口范围。如果主机和容器之间的范围无效,将会报错。

Range mapping

终端生命周期 #3725

当为容器打开一个终端后,在您切换到 Podman Desktop UI 的其他部分后,该终端可以被重用。

terminal lifetime

创建卷 #3742

“卷”选项卡现在有一个“创建卷”按钮。创建卷的 UI 只有一个用于输入卷名称的字段。

create volume

bash 支持 #3750

为容器打开终端时,如果容器内有 bash,将使用 bash。否则,将使用 sh。

bash sh

值得注意的错误修复

  • 列出容器时减少 API 调用 by @benoitf #3489
  • 移除连接(podman machine)后应重定向到上一页 by @benoitf #3576
  • 当镜像不存在时增强错误消息 by @benoitf #3587
  • 当扩展停用时移除 kind 安装按钮 (#3586) by @lstocchi #3610
  • 在 Windows 上构建镜像时替换反斜杠/斜杠 (#3465) by @lstocchi #3618
  • 处理容器命令中的空值 (#3620) by @lstocchi #3625
  • 为扩展添加最大激活时间 by @benoitf #3446
  • 处理单个非展开参数 by @benoitf #3641
  • 仅在需要时获取卷的使用数据 by @benoitf #3635
  • 为 Windows 添加 arm64 二进制文件 by @benoitf #3643
  • 为 Windows 和 arm64 包含正确的 airgap 文件 by @benoitf #3651
  • 移除 Kubernetes 连接后重定向到上一页 by @benoitf #3650
  • 启动容器时支持端口范围 (#3204) by @lstocchi #3654
  • 为消息框结果添加严格的 undefined 检查 (#3692) by @lstocchi #3699
  • 仅在机器运行时才重启 by @cdrage #3491
  • 终端会话可被重用 by @benoitf #3725
  • 当引导失败时禁用“下一步”按钮并显示“重试” (#3616) by @lstocchi #3711
  • 更新进程环境 PATH 后将 podman 添加到 PATH 中 (#3729) by @lstocchi #3730
  • 允许创建卷 by @benoitf #3742
  • 在终端中优先使用 bash,否则使用 sh by @axel7083 #3750
  • 允许将现有组件嵌入到引导流程中 (#3755) by @lstocchi #3763
  • 某些容器从不返回日志,不要等待它们 by @dgolovin #3784
  • 在引导流程的最后一步移除取消按钮 (#3771) by @lstocchi #3802
  • 引导流程为命令添加 micromark 链接 by @cdrage #3747
  • 使用较旧的 podman 时挂载点可能为空 by @afbjorklund #3806
  • 引导流程开始时移除多余的步骤完成检查 by @lstocchi #3798
  • 允许在拉取镜像名称输入框中按回车键 by @deboer-tim #3850
  • 启动进程时设置代理环境变量 by @jeffmaury #3838
  • 新版 podman 的套接字位置已移动 by @afbjorklund #3853
  • 激活 lima 扩展时不要记录控制台错误 by @afbjorklund #3852

社区致谢

🎉 我们要向所有帮助 Podman Desktop 变得更好的朋友们表示衷心的感谢。

热烈欢迎 @tomgoren@Julian@Gelob@cedricclyburn 在此版本中首次对项目做出贡献。

最后说明

此版本中修复的完整问题列表可在此处查看:here

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。

Podman Desktop 1.3 发布

·8 分钟阅读
Denis Golovin
首席软件工程师

Podman Desktop 1.3 发布!🎉

这基本上是一个错误修复版本,旨在修复 UI、扩展引擎和特色扩展中的各种问题,但像往常一样,我们也添加了一些新功能。

  • Podman 4.6.1: Windows 和 Mac 安装程序中包含 Podman 4.6.1
  • Podman 用户模式网络支持 Windows/WSL:在 Windows 上创建 Podman 机器时,对于 Podman 4.6.0+,现在有一个新的开关“用户模式网络”可用于配置 Podman,使其在某些 VPN 设置和其他专用网络配置中正常工作。
  • Compose 组新的 UI 元素:您现在可以查看摘要、检查、部署到 Kubernetes、生成 Kube YAML 和查看日志
  • 扩展包和扩展依赖项:一键安装一组扩展
  • 资源详情页面更新:查看资源的摘要和日志
  • 创建 Kind 集群表单更新:新的 Node's container image 字段可用于指定控制平面使用的 Kubernetes 版本。
  • 支持使用后端服务的 Docker Desktop 扩展:加载 Docker Desktop 扩展时,容器会在扩展描述符的 vm 部分中描述的后端创建
  • Podman 初次入门(预览):使用附带的安装程序安装和配置 Podman

Podman Desktop 1.3 现已发布。 点击此处下载

Podman-desktop-1-3-bug-swatting


发布详情

Compose 组日志标签页 #3176

现在点击容器组,可以查看整个 compose 容器组的日志,无需单独打开每个组件的日志。

Screenshot 2023-07-11 at 12 48 47 PM

Podman 用户模式网络支持 Windows/WSL #3251

某些 VPN 设置或其他专用网络配置会阻止来自虚拟 WSL 网络设备的流量,导致 podman WSL 后端无法联系 VPN 上的系统,并可能完全失去互联网访问。新开关允许您创建一个配置正确的 podman VM 机器,以便在上述网络环境中正常工作。

user

Compose 组摘要标签页 #3317

Compose 组摘要选项卡显示组中的所有容器,并允许您导航到特定容器的详细信息页面。

Compose 组检查标签页 #3316

Compose 组的“检查”选项卡显示来自 docker / podman 的“容器检查”数组。

Compose 操作中的Deploy to kubernetes#3299

已在 Compose 组中添加了一个部署到 kubernetes 的按钮。

Compose 操作中的Generate Kube和 Compose 详情中的Kube标签页 #3253

Generate Kube 项已添加到 Compose 操作中,“Kube”选项卡现在可在 Compose 详细信息视图中查看。

使用扩展包安装多个扩展 #3150

扩展引擎中引入的扩展包是一种声明一组扩展并一次性安装它们的方法。

从扩展自定义图标 #3131

扩展现在可以使用 when 子句自定义列表元素的图标。

image

资源详情页面更新 #1923

如果您点击资源名称旁边的箭头图标,它将打开一个详细信息页面(类似于点击容器列表中的容器会打开详细信息页面)。

image

Node's container image 字段已添加到 Create a Kind cluster 表单 #3508

新的 Node's container image 字段可用于指定控制平面使用的 Kubernetes 版本。

image

使用后端支持 Docker Desktop 扩展 #3435

Podman Desktop 现在按照扩展描述符的 vm 部分中的描述在后端加载容器,与 Docker Desktop 方式相同。

Podman 的初始入职实现(实验性)#3308

这是入门功能的初步实现。它仅涵盖 podman 的简单入门。检查系统要求 -> 安装 podman -> 太棒了!完成!

值得注意的错误修复

  • @mairin 更新视频以适应移动设备 #3229
  • @deboer-tim 设置中一致的最大宽度和填充 #3232
  • @deboer-tim 调整设置导航栏大小 #3231
  • @deboer-tim 将新注册表按钮移动到标题 #3245
  • @afbjorklund 更大的 lima 徽标 #3248
  • @afbjorklund 水平 Docker 徽标 #3236
  • @afbjorklund 尊重 LIMA_HOME 环境变量 #3254
  • @lstocchi 在写入终端之前添加检查 #3263
  • @benoitf 等待直到远程端完全初始化扩展 #3257
  • @benoitf 修复加载器未水平居中问题 #3270
  • @deboer-tim 故障排除后仍然等待 #3354
  • @cdrage 存储构建错误 #3365
  • @deboer-tim 缺少复选框工具提示 #3380
  • @cdrage 异步加载 compose 日志而不是 await #3377
  • @lstocchi 在启动 rootful 机器时设置 rootful 连接 #3364
  • @deboer-tim 默认最后一页 #3388
  • @benoitf 避免仪表板显示提供程序正在启动但实际未启动 #3451
  • @benoitf 在定义 extensionInfo 之前不要使用它 #V
  • @cdrage 允许 BASIC 认证(全大写) #3471
  • @cdrage 允许单域注册表,例如 localhost:5000 #3468
  • @cdrage 如果二进制安装时 /usr/local/bin 目录不存在则创建 #3425
  • @deboer-tim 仅删除选定的 Pod #
  • @benoitf 在按钮上重新添加“Done”文本 #3487
  • @benoitf 检查 Podman ping 时等待时间不超过 5 秒 #3497
  • @dgolovin 添加使用修补 get 和请求方法的扩展代理支持 #2825
  • @benoitf 字段更新时刷新组件 #3525
  • @mairin 特色扩展列表的高分辨率图标 #3511
  • @deboer-tim 主导航选择 #3510
  • @jeffmaury 切换上下文时的 kube 事件错误 #3494
  • @benoitf 每次拉取镜像时重置错误消息 #3550

社区致谢

🎉 我们要向所有帮助 Podman Desktop 变得更好的朋友们表示衷心的感谢。

热烈欢迎 @rostalan@axel7083 在此版本中首次对项目做出贡献。

最后说明

此版本中修复的完整问题列表可在此处查看。

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。

Podman Desktop 1.2 发布

·9 分钟阅读
Charlie Drage
软件工程师

Podman Desktop 1.2 版本发布!🎉

我们很高兴地宣布 Podman Desktop 1.2.0 版本发布!此版本包含许多新功能(Kubernetes、Compose 和扩展支持!)、错误修复和改进,以增强您的容器管理体验。以下是此版本中主要更改的摘要

  • 为 Compose 添加了启动/停止/删除/重启按钮:您现在可以对整个 Compose 容器组进行更改。
  • 状态栏上的 Kubernetes 上下文:现在可以从状态栏更轻松地在多个 Kubernetes 上下文之间进行选择。
  • 重命名镜像:单击按钮即可重命名镜像。
  • 协议处理程序支持:添加了对协议处理程序的支持,例如 open podman-desktop:extension/redhat.openshift-local
  • 故障排除页面:一个用于帮助诊断 Podman Desktop 相关开发问题的故障排除页面。

Podman Desktop 1.2 现已可用。点击此处下载

Podman-desktop-1-2-hero


发布详情

为 Compose 添加了启动/停止/删除/重启按钮

上个月我们增加了对更多 Compose 功能的支持。以前,您只能控制 Pod 中的一组容器。现在我们增加了控制一组 Compose 容器的功能。您现在可以启动、停止、删除和重启由docker-composepodman-compose启动的一组容器。

请继续关注,我们将为 Compose 添加更多功能!如果您有任何反馈或功能请求,请随时在 GitHub 上提出 issue 或发起讨论。

状态栏上的 Kubernetes 上下文

通过状态栏上的 Kubernetes 上下文,您只需点击几下即可从一个上下文切换到另一个。轻松切换到完全不同的集群。如果存在多个上下文,您现在可以点击并选择要使用的上下文。

重命名镜像

部署了一个镜像,但现在需要重命名它/添加一个新标签?Podman Desktop 现在允许您编辑镜像。感谢一位出色的贡献者 @tuckerrc 添加了这项新功能。

故障排除页面

正在为 Podman Desktop 开发扩展吗?想查看 Podman Desktop 的日志并 ping 您的容器连接吗?我们现在有一个故障排除页面!

点击右下角的灯泡按钮即可访问该页面。

协议处理程序支持

Podman Desktop 现在支持在使用终端时的协议处理!想直接从脚本或终端访问您最喜欢的扩展吗?如果您在终端中输入open podman-desktop:extension/redhat.openshift-local,Podman Desktop 将自动加载到正确的扩展。


其他值得注意的功能

  • 背景颜色和 FormPage (PR #2977)
  • 添加添加不安全注册表/跳过证书验证的功能 (PR #2896)
  • 添加对图标贡献的支持 (PR #2984)
  • 添加虚拟机内存限制过低的警告对话框消息 (PR #2822)
  • 为新 Pod 建议索引名称 (PR #3028)
  • 在启用/禁用 macOS 兼容性后添加重启按钮 (PR #2841)
  • 添加与环境相关的辅助常量 (PR #3079)
  • 允许在启动容器时指定入口点和命令 (PR #3031)
  • 在故障排除页面中添加调试存储区的方法 (PR #3121)
  • 添加 custompick 组件 (#2855) (PR #3012)
  • 动态面包屑导航 (PR #3119)
  • 表单页面上的图标 (PR #3155)
  • 将更多页面切换到 FormPage (PR #3162)
  • 添加重命名镜像按钮 (PR #2588)
  • 固定的页眉,改进的滚动条 (PR #2863)
  • 报告 kube 部署失败的警告,修复错误退出 (PR #3050)
  • 状态栏上的 Kube 上下文 (PR #2755)
  • 点击“创建新”按钮时,如果提供程序未安装则进行安装 (#2706) (PR #2817)
  • 向扩展 API 添加标签和认证推送功能 (PR #2876)
  • 添加导航栏端到端测试 (PR #2950)

文档更新

  • 修复构建扩展镜像的文档 (PR #2873)
  • 添加 Minikube 安装文档 (PR #2824)
  • 添加 Minikube 文档 (PR #2694)
  • 更新了构建镜像的流程 (PR #2964)
  • 启动容器 (PR #2958)
  • 拉取镜像 (PR #2956)
  • 更新了选择要在 Pod 中运行的容器 (PR #2970)
  • 将镜像推送到注册表 (PR #2969)
  • 如何添加不安全的注册表 (PR #2953)
  • 添加 lima 的文档 (PR #2995)
  • 替换指向 podman.io 的损坏链接 (PR #2994)
  • 向预配置的注册表进行身份验证 (PR #2965)
  • Lima 不是容器引擎 (PR #3051)
  • 使用故障排除页面 (PR #3083)
  • 在状态栏中查看并选择您当前的 Kubernetes 上下文 (PR #3090)

值得注意的错误修复

  • 删除正在运行的 Pod 会产生错误 (PR #2827)
  • 如果 kubeconfig 为空,则不尝试执行任何操作,取消 (PR #2874)
  • 异步遥测启动 (PR #2885)
  • 在等待 kube 资源刷新时不阻塞启动 (PR #2884)
  • 镜像列表过宽 (PR #2918)
  • Compose 的停用函数从未被调用 (PR #2922)
  • 表单页面上的自动滚动,布局问题 (PR #2927)
  • 在快速选择中显示当前上下文 (PR #2920)
  • 移除仪表板 UI 中加载器的粘性定位 (#2535) (PR #2959)
  • 撤销导致网站损坏的更改 (PR #2992)
  • 详情页面,调整大小和一致性 (PR #2987)
  • 快速选择点击关闭并覆盖导航栏 (PR #2758)
  • 仅在没有 Pod 时显示空屏幕 (PR #2929)
  • 在容器列表中删除 Pod 时不重定向到 /pods (PR #2963)
  • Pod 上的批量删除应调用 Pod 删除 (PR #2979)
  • 更新 .nvmrc 中的 nodejs 版本为 18 以修复 yarn 安装失败 (PR #2989)
  • 网站检查目标 (PR #2996)
  • 不向用户显示异常 (PR #3034)
  • 解释传递给 info 命令的参数(示例) (PR #3015)
  • 更改 Podman 机器的默认设置 (PR #3061)
  • 规范化开发/生产文件夹路径 (PR #3113)
  • 计算 Linux 的机器套接字路径 (PR #3070)
  • 用斜杠替换反斜杠以支持在 Windows 上渲染 (#3120) (PR #3122)
  • 将 stdout 和 stderr 保留在 Docker Desktop 扩展的错误对象中 (PR #3014)
  • 如果出现故障,则将任务标记为已完成 (PR #3016)
  • 处理无效的 kubeconfig 文件 (PR #3129)
  • Podman 扩展停止时不移除注册表 (PR #3136)
  • 警告应为琥珀色 (PR #3153)
  • 从插件加载的用户扩展应为可移除的 (PR #3152)
  • 入口点或命令中带空格的镜像无法启动 (PR #3161)
  • 点击复选框时滚动到屏幕外 (PR #3178)
  • 避免消息框扩展到屏幕外 (PR #2778)
  • 发布说明生成器运行失败 (PR #2752)
  • 如果上一次构建失败,则无法进行新的构建 (PR #2721)

社区致谢

🎉 我们要向所有帮助 Podman Desktop 变得更好的朋友们表示衷心的感谢。

非常感谢 @afbjorklund@tuckerrc@evanshortiss 对本次发布做出的贡献!


最后说明

此版本中修复的完整问题列表可在此处此处获得。

从网站的下载部分获取最新版本,并通过 Podman Desktop 提升您的开发之旅。此外,访问 GitHub 仓库,了解如何帮助我们改进 Podman Desktop。

Podman Desktop 1.1 发布

·4 分钟阅读
Tim deBoer
架构师

Podman Desktop 1.1 发布!🎉

这主要是一个错误修复版本,旨在解决一些重要问题,但我们在此过程中也设法加入了一些增强功能。

  • Podman 4.5.1:Windows 和 Mac 安装程序现在包含 Podman 4.5.1。
  • 扩展:从 Podman Desktop 内部更新扩展。
  • Lima 支持:从设置中选择引擎类型并覆盖其名称。
  • UX 和 UI 改进:新的加载屏幕。

Podman Desktop 1.1 现已可用。点击此处下载

Podman-desktop-1-1-hero

Podman Desktop 1.0 发布

·7 分钟阅读
Tim deBoer
架构师

Podman Desktop 1.0 发布!🎉

我们还有很多计划中的事情,但经过一些改进和一些错误修复后,我们认为我们已经达到了成熟的水平,现在是时候宣布我们的1.0版本了。

感谢所有一直与我们同行的人!请继续提供反馈!

  • 突出显示特色扩展:轻松查找和安装新扩展。
  • 特色扩展:支持 OpenShift 的两个新扩展。
  • Podman Machine 作为 Root 运行:能够以 root 身份运行 Podman 机器。
  • UX 和 UI 改进:打开外部网站、编辑数字和工具提示。

Podman Desktop 1.0 现已可用。点击此处下载

Podman-desktop-1-0-hero

发布说明 - Podman Desktop 0.15

·阅读时间 6 分钟
Tim deBoer
架构师

Podman Desktop 0.15 - 洁净更接近 Podliness!

距离上次发布仅两周,但我们真的想完成一些场景,修复一些错误,并展示我们一直在努力的几个设计更新和用户界面改进。

  • Podman 版本:Windows 和 Mac 安装程序现在包含 Podman 4.5。
  • Kind 入口:创建入口以将服务暴露在 Kind 集群之外。
  • Podliness:将容器 pod 化时选择外部端口的能力。
  • 洁净:新的导航栏、对话框和调色板更新。
  • UX 和 UI 改进:对扩展的 Markdown 支持。

Podman Desktop 0.15 现已可用。点击此处下载

Podman-desktop-0-15-hero

发布说明 - Podman Desktop 0.14

·阅读时间 6 分钟
Tim deBoer
架构师

Podman Desktop 0.14 - 我们最友好的版本!

我们已经开发 Kind 扩展有一段时间了,并决定是时候将其推广到发布版本中,正好赶上 KubeCon 和 CloudNativeCon Europe!

我们特别高兴发布 Kind,因为它最终展示了 Podman Desktop 的全部目的:不仅是本地容器引擎,还有 Kubernetes。更重要的是,它提供了允许您管理这两个环境并在它们之间无缝切换的工具。

其中一些功能在过去的几个版本中以开发模式提供,但由于它们现在已包含在发布版本中,我们将进行全面总结并讨论所有 Kind 功能。

  • Kind 安装:从状态栏安装 Kind
  • 管理 Kind 集群:从设置 > 资源创建和管理 Kind 集群
  • 使用 Kind:将 YAML 部署到集群并共享镜像
  • Kind 入口:安装 Contour 入口控制器
  • UX 和 UI 改进:更新的偏好设置和遥测提示

Podman Desktop 0.14 现已可用。点击此处下载

Podman-desktop-0-14-hero

发布说明 - Podman Desktop 0.13

·5 分钟阅读
Tim deBoer
架构师

本发行说明涵盖了 Podman Desktop 0.13 版本的变更。

  • Podman 版本:Windows 和 Mac 安装程序现已包含 Podman 4.4.4。
  • Compose:支持安装 Docker Compose。
  • 扩展:改进了对 Podman Desktop 的扩展支持,并增加了额外功能。
  • UX 和 UI 改进:欢迎页面、任务管理器、资源管理和更新提醒。

Podman Desktop 0.13 现已发布。点击此处下载

Podman-desktop-0-13-hero

Docker 用户需要了解的关于 Podman Desktop 的 5 件事

·5 分钟阅读
Florent Benoit
首席软件工程师

使用 Podman Desktop 作为 Docker 用户需要了解的 5 件事

  • 使用单一 UI:Podman Desktop 适用于多种容器引擎,包括 Docker。
  • 兼容模式:如何确保工具与 Podman 而非 Docker 协同工作。
  • Compose 支持:如何使用 Compose 文件和 Podman。
  • Kubernetes 支持:如何将 Kubernetes 与 Podman 配合使用。
  • 安全性:使用 `rootless` 模式或无 root 权限的容器。

5-things-to-know-for-a-docker-user-hero

发布说明 - Podman Desktop 0.12

·7 分钟阅读
Stevan Le Meur
产品经理

本发行说明涵盖 Podman Desktop 0.12 版本更改。

  • Podman 版本:Windows 和 Mac 安装程序中现已包含 Podman 4.4.1。
  • 容器配置:配置未导出端口的镜像的端口映射。
  • Windows 家庭版支持:Podman Desktop 现在支持 Windows 家庭版。
  • 启动时最小化:可选择将 Podman Desktop 最小化到系统托盘中启动。
  • 用户体验和用户界面改进:一致的操作、日志占位符、统一的图标等。

Podman Desktop 0.12 现已发布。 点击此处下载

podman-desktop-0-12-hero

发布说明 - Podman Desktop 0.11

·阅读时长13分钟
Stevan Le Meur
产品经理

本发布说明涵盖了 Podman Desktop 0.11 版本的变更。

  • 气隙安装:新的气隙安装一体式二进制文件。
  • 反馈:直接从 Podman Desktop 提交反馈。
  • Docker 兼容模式:关于 Docker 兼容模式的信息。
  • 代理设置:切换代理设置开/关。
  • 部署到 Kubernetes:选择要部署到的 Kubernetes 命名空间。
  • 注册表配置:简化了常用注册表的配置。
  • UX/UI 改进:查看 Pod 的容器日志,更好的视觉反馈,可配置的编辑器字体大小,等等。

Podman Desktop 0.11 现已可用。点击此处下载

发布说明 - Podman Desktop 0.10

·阅读时间 6 分钟
Dev Kumar
技术 PMM 实习生

此发布说明涵盖 Podman Desktop 0.10 版本的更改。

  • 容器配置:容器创建向导允许定义环境变量、网络和更多配置选项。
  • Kubernetes 改进:播放 Kubernetes YAML、自定义 Kubeconfig 路径支持、重新加载 kube 上下文。
  • 注册表配置:重新设计的注册表配置 UI。
  • Podman 版本:Windows 和 Mac 安装程序现在包含 Podman 4.3.1。
  • UX/UI 改进:改进的列表、更好的对比度等。

Podman Desktop 0.10 现已可用。点击此处下载

在 DevContainer 中构建并运行 Podman Desktop

·9 分钟阅读
Florent Benoit
首席软件工程师

GitHub 上周宣布 Codespaces 已对所有人开放,并提供免费时长。

让我们看看如何使用一个开发容器,它拥有构建和运行 Podman Desktop 的所有工具。开发容器在本地使用 Visual Studio Code 工作,但在本博客文章中,我们将看到它如何直接通过 GitHub 一键工作。

挑战在于如何在不占用过多内存的情况下,在这个开发容器中运行一个桌面工具(Podman Desktop)和一个容器引擎(Podman)!