Docker 用户需要了解的关于 Podman Desktop 的 5 件事
使用 Podman Desktop 作为 Docker 用户需要了解的 5 件事
- 使用单一 UI:Podman Desktop 适用于多种容器引擎,包括 Docker。
- 兼容模式:如何确保工具与 Podman 而非 Docker 协同工作。
- Compose 支持:如何使用 Compose 文件和 Podman。
- Kubernetes 支持:如何将 Kubernetes 与 Podman 配合使用。
- 安全性:使用 `rootless` 模式或无 root 权限的容器。
使用 Podman Desktop 与 Docker 中运行的容器交互
Docker Desktop 提供了一个 UI 来与容器和镜像交互。但是 UI 依赖于 Docker API,因此无法同时使用 UI 与 Docker 和 Podman。
Podman Desktop 是一个多引擎 UI 工具。该 UI 与 Docker 和 Podman 的 API 兼容。这意味着所有引擎中的所有容器和镜像都可以在 UI 中同时显示。
从 Docker 迁移到 Podman 时,您可以使用 Podman Desktop 与 Docker 中运行的容器交互。探索 Podman Desktop 的所有命令和功能,并查看 Docker 的所有资源。
Docker 兼容模式
使用 Podman Desktop 或 Podman CLI 使用 Podman 非常简单。但是有些工具期望找到 docker
CLI 或 docker.sock
套接字。在这种情况下,您必须使用 Podman 的兼容模式。
套接字文件兼容性
套接字兼容模式是 Podman 的一个功能,它允许将 Podman 套接字绑定到 Docker 套接字路径下。
在 Windows 上,套接字兼容模式默认始终启用。在 macOS 上,使用 .pkg 安装程序
时,它默认处于活动状态。但是当使用 brew
安装时,它将不会存在,因为它需要一些管理员权限。
这不是问题,因为您可以通过调用 CLI 工具来启用它,该工具将设置兼容模式。
例如,如果您在 Java 项目中使用 Testcontainers
,您可以使用兼容模式来确保该工具将使用 Podman 而不是 Docker。
CLI 兼容性
如果您有依赖 docker
CLI 的脚本,您可以使用兼容模式来确保该工具与 Podman 而不是 Docker 协同工作。
如果您的计算机上安装了 docker
CLI,您可以使用 docker 的套接字文件兼容性来确保该工具与 Podman 引擎而不是 Docker 协同工作。
如果您的计算机上没有安装 docker
CLI,您可以创建一个名为 docker
的脚本,它将调用 podman
CLI。
注意: 创建 shell 提示符别名,例如 alias docker=podman
,在您调用的脚本中将不起作用。
Compose
作为 Docker 用户,您可能使用 docker compose
(或 docker-compose
)来运行某些应用程序。
目前,Podman 没有直接在 CLI 中通过 podman compose
命令包含 Compose
支持。
Compose
可以与 Podman 套接字一起使用。
基于兼容模式(参见关于 Docker 兼容模式的部分)
- 已启用:您可以使用
compose
二进制文件运行您的应用程序。 - 已禁用:您需要在运行 compose 之前导出环境变量 DOCKER_HOST。
您现在可以使用 compose
二进制文件运行您的应用程序,它将使用 Podman 引擎。
Podman Desktop 有一个 compose
扩展,如果文件系统上没有 compose
二进制文件,它可以获取它。
Podman Desktop UI 显示由 Compose
创建的容器在同一组中。
Kubernetes
可以使用 Docker 启动 Kubernetes 集群。
Podman 直接支持一部分 Kubernetes 资源,您可以与 .yaml
文件一起使用。
例如,如果您只想创建一个 Pod
资源,您可以使用 Containers
列表屏幕中的 Play Kubernetes YAML
按钮和您的 .yaml
文件。无需安装或启动 Kubernetes 集群。
可以进行相反的操作。将容器或 Pod 的定义导出到 Kubernetes 资源。您可以使用给定容器或 Pod 的 kebab 菜单中的 Generate kube
按钮。
Podman 处理 Pod,在 Podman Desktop UI 中,您可以在 Pod 部分看到所有 Pod。Pod 内的所有容器都在同一组中。
一个实验性的 kind
扩展正在带来使用 Podman 创建完整的 Kubernetes 集群。
无根模式
Docker 和 Podman 的区别之一是它们处理容器的方式。Docker 默认需要 root 权限来运行容器。Podman 默认可以在没有 root 权限的情况下运行容器。
这意味着,例如,启动一个端口小于 1024 的容器将无法工作。您需要使用大于 1024 的端口。
如果您仍然需要创建端口小于 1024 的容器,如果您在 Windows 或 macOS 上,您可以更改 Podman Machine 的 Podman Machine 配置。
命令是 podman machine set --rootful
来启用以 root 权限执行,或 podman machine set --rootful=false
来切换回无根模式。