Skip to content

FlyEnv 中的 Podman 容器管理:无需 Root 的 Docker 替代方案

Docker Desktop 占用太多内存?需要运行已经不再原生安装的 PHP 5.5 或 MySQL 5.6?想要容器隔离但不想给系统 root 权限?

**Podman 就是答案。**而 FlyEnv 让它变得像点击按钮一样简单。

与 Docker 不同,Podman 默认以无根模式运行容器——没有以 root 运行的守护进程,没有容器逃逸带来的安全风险。结合 FlyEnv 的可视化界面,您可以获得容器化的所有好处而无需复杂性。

为什么要使用 Podman 而不是 Docker?

Docker Desktop 的问题

问题Docker DesktopPodman + FlyEnv
资源占用空闲时 2-4GB RAM200-500MB
Root 权限守护进程以 root 运行默认无根模式
订阅费用企业版 $5-21/月完全免费
厂商锁定仅 Docker 生态兼容 OCI(可互操作)
复杂性多个组件单一二进制文件

何时在 FlyEnv 中使用容器

1. 遗留软件支持

需要为旧项目运行 PHP 5.5 或 MySQL 5.6?现代包管理器(Homebrew、MacPorts)多年前就已停止支持。Podman 容器可以无限期保留这些版本:

yaml
# 用于遗留技术栈的 docker-compose.yml
version: '3'
services:
  php55:
    image: php:5.5-apache
    volumes:
      - ./legacy-app:/var/www/html
  
  mysql56:
    image: mysql:5.6
    environment:
      MYSQL_ROOT_PASSWORD: root

2. 隔离的开发环境

无风险地测试不受信任的代码:

  • 下载了一个可疑的 GitHub 仓库?在容器中运行它。
  • 客户的旧 WordPress 网站带有可疑插件?将其容器化。
  • 正在尝试新软件?与主系统隔离。

3. Docker Compose 项目

已经有 docker-compose.yml?直接导入并运行——无需更改。

在 FlyEnv 中开始使用 Podman

前提条件

FlyEnv 4.11.0+ 包含 Podman 模块。无需单独安装。

支持的平台:

  • macOS(Intel 和 Apple Silicon)
  • Windows(通过 WSL2)
  • Linux

创建您的第一个 VM

macOS/Windows 上的 Podman 需要 Linux VM。FlyEnv 会自动处理:

  1. 打开 FlyEnv → Podman 模块
  2. 进入 VM 标签页
  3. 点击 "创建 VM"
  4. 配置资源:
    • CPU:2-4 核(默认:2)
    • 内存:2-8GB(默认:2GB)
    • 磁盘:20-100GB(默认:50GB)
  5. 点击 创建 并等待配置完成

Create VM Dialog

  1. 选择 VM 并点击 启动

VM Management

使用模板快速开始

FlyEnv 为常见的技术栈提供预配置的模板:

模板包含组件使用场景
LAMPApache + PHP + MySQL遗留 PHP 应用
LEMPNginx + PHP + MySQL现代 PHP 框架
Node.jsNode + MongoDBJavaScript 应用
RedisRedis 服务器缓存层
PostgreSQLPostgres + pgAdmin数据库开发

使用模板的方法:

  1. 进入 Compose 标签页
  2. 点击 "从模板创建"
  3. 选择一个模板
  4. 选择目标文件夹
  5. 点击 创建

Template Selection

模板会生成一个可立即运行的 docker-compose.yml

管理 Docker Compose 项目

导入现有项目

已经有 docker-compose.yml?几秒钟内导入:

  1. Compose 标签页 → "导入"
  2. 选择您的 docker-compose.yml 文件
  3. 项目将出现在列表中
  4. 点击 启动 启动所有服务

Import Compose

管理运行中的项目

Compose 管理视图显示:

  • 运行/停止状态
  • 单个服务状态
  • 端口映射
  • 卷挂载

操作:

  • 启动/停止:控制整个技术栈
  • 重启:重启特定服务
  • 日志:查看每个服务的实时日志
  • 删除:移除技术栈(保留文件)

Compose Management

Compose Management 2

查看日志

  1. 选择一个 compose 项目
  2. 点击 日志 标签页
  3. 从下拉菜单选择服务
  4. 查看实时输出

筛选选项:

  • 所有服务
  • 特定服务
  • 搜索关键词

Compose Logs

Compose Logs 2

容器管理

创建容器

对于单个容器(不使用 Compose):

  1. 容器 标签页 → "添加"
  2. 配置:
    • 镜像:选择或输入(例如 nginx:latest
    • 名称:容器标识符
    • 端口:主机:容器 映射
    • :主机文件夹:容器路径
    • 环境变量:环境变量
  3. 点击 创建

Add Container

容器操作

操作描述何时使用
启动/停止控制运行状态日常操作
重启停止后启动应用配置更改
删除移除容器清理未使用的容器
导出保存到文件备份或转移
提交保存为镜像保留修改
执行打开 shell在内部运行命令

在容器中执行命令

需要在运行中的容器内运行命令?

  1. 选择容器
  2. 点击 "执行"
  3. 选择 shell(/bin/bash/bin/sh
  4. 交互式运行命令

Container Exec

Container Exec 2

常用命令:

bash
# 检查 PHP 版本
php -v

# 安装软件包
apt-get update && apt-get install -y vim

# 检查运行中的进程
ps aux

# 查看环境变量
env

镜像管理

拉取镜像

  1. 镜像 标签页 → "拉取"
  2. 输入镜像名称和标签:
    • nginx:latest
    • php:8.2-apache
    • mysql:8.0
  3. 点击 拉取

镜像从 Docker Hub 或您配置的镜像仓库下载。

Pull Image

管理本地镜像

镜像标签页显示:

  • 仓库名称
  • 标签/版本
  • 磁盘占用大小
  • 创建日期

操作:

  • 运行:从镜像创建容器
  • 删除:移除以释放空间
  • 导出:保存为 tar 文件
  • 导入:从 tar 文件加载

Image List

节省空间提示: 定期删除未使用的镜像。典型镜像大小为 100MB-1GB。

实际使用案例

运行遗留 PHP 5.5

客户有一个只能在 PHP 5.5 上运行的 10 年历史 WordPress 网站:

yaml
version: '3'
services:
  wordpress:
    image: php:5.5-apache
    volumes:
      - ./client-site:/var/www/html
    ports:
      - "8080:80"
  
  mysql55:
    image: mysql:5.5
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
  1. 保存为 docker-compose.yml
  2. 导入到 FlyEnv Podman
  3. 启动服务
  4. 访问 http://localhost:8080

隔离不受信任的代码

从 Stack Overflow 下载了一个可疑脚本?

bash
# 不要直接在您的机器上运行...
# 在一次性容器中运行

1. 使用 `ubuntu:latest` 创建容器
2. 仅挂载脚本文件夹
3. 运行脚本
4. 完成后删除容器

您的主机系统保持不受影响。

无需安装即可测试软件

想要尝试 Elasticsearch 而无需复杂设置?

  1. 拉取 elasticsearch:8.x 镜像
  2. 创建映射 9200 端口的容器
  3. 测试您的应用
  4. 完成后删除——无需清理

故障排除

"VM 无法启动"(macOS/Windows)

原因:

  • VM 磁盘空间不足
  • BIOS 中未启用虚拟化(Windows)
  • 其他 VM 冲突

解决方案:

  1. 释放磁盘空间(至少 20GB)
  2. 在 BIOS/UEFI 中启用虚拟化
  3. 停止其他 VM 软件(VirtualBox、VMware)

"无法连接到 Docker 守护进程"

原因:VM 未运行

解决方案:先在 Podman 模块中启动 VM。

"端口已被占用"

原因:主机端口与其他服务冲突

解决方案:在容器/compose 配置中更改主机端口:

yaml
ports:
  - "8080:80"  # 替代 80:80

访问卷时出现 "权限被拒绝"

原因:无根容器权限问题

解决方案

  1. 使用命名卷替代绑定挂载
  2. 或在容器选项中设置正确的 UID/GID

macOS 上性能缓慢

原因:文件系统转换开销

解决方案:

  1. 使用 :cached:delegated 挂载标志
  2. 从挂载中排除 node_modules
  3. 使用 SSD 存储 VM

Podman vs Docker Desktop:功能对比

功能Docker DesktopPodman + FlyEnv
无根模式❌ 否✅ 是
守护进程必需无守护进程
Docker Compose✅ 是✅ 是
镜像兼容性Docker HubDocker Hub + OCI
资源占用2-4GB200-500MB
成本$5-21/月(商业版)免费
Kubernetes内置通过 minikube
GUI 管理仅 Dashboard完整集成

常见问题(FAQ)

Q:我可以将 Docker Hub 镜像与 Podman 一起使用吗?

A:可以。Podman 完全兼容 Docker Hub 和 OCI 兼容的镜像仓库。拉取并运行任何公共 Docker 镜像。

Q:我需要学习新命令吗?

A:不需要。Podman CLI 与 Docker 兼容。podman run = docker runpodman ps = docker ps 等。但有了 FlyEnv 的 GUI,您很少需要使用 CLI。

Q:Podman 比 Docker 慢吗?

A:不会。性能相当。在 Linux 上,由于没有守护进程开销,Podman 通常更快。在 macOS/Windows 上,两者都使用 VM,因此性能相似。

Q:我可以迁移现有的 Docker 项目吗?

A:可以。Docker Compose 文件无需修改即可工作。直接导入并运行。

Q:它能与 VS Code Dev Containers 一起工作吗?

A:可以。安装 Podman CLI 并配置 VS Code 使用它替代 Docker。

Q:如何从本地网络访问容器?

A:创建容器时映射端口(例如,主机 8080 → 容器 80)。然后通过 http://localhost:8080 访问。

Q:我可以在容器中运行 GUI 应用吗?

A:可以,通过额外的 X11 转发配置(macOS/Linux)。一般更适合服务器应用。

Q:VM 和容器有什么区别?

A:在 FlyEnv 的 Podman 模块中:VM 是 Linux 虚拟机(仅限 macOS/Windows)。容器在 VM 内运行。在 Linux 上,容器直接运行,无需 VM。

Q:我需要多少磁盘空间?

A:VM:20-50GB。每个镜像:典型 100MB-1GB。建议总共预留 100GB 以确保舒适使用。

总结

FlyEnv 的 Podman 模块架起了原生开发与容器化之间的桥梁:

  • 运行遗留软件 包管理器中不再可用的
  • 隔离不受信任的代码 不对系统造成风险
  • 一键部署 Docker Compose 项目
  • 默认无根模式 更好的安全性
  • 永久免费 无订阅费用

准备好减少 Docker Desktop 的资源占用了吗?立即尝试 FlyEnv 中的 Podman。

下载 FlyEnv — 适用于 macOS、Windows 和 Linux

探索更多功能: