开发者模式
Bluefin 开发者体验(bluefin-dx)是一款捆绑了工具的专用开发者镜像。与传统 Linux 系统不同,操作系统和开发者环境被明确且刻意地分离。这意味着工具不安装在宿主机上,而是容器化、运行在虚拟机中,或被限定在用户的 home 目录内。它旨在满足以下使用场景:
Bluefin 力求提供:
- 世界上最强大的cloud native 开发环境
- 围绕 QEMU/KVM 的完整虚拟化支持,以及针对 Docker 和 Incus 的支持
世界上有1560 万云原生开发者。我们的工作流建立在这些技术所得到的开发经验之上。
云原生开发 Approach
Bluefin 在云原生开发上"all in",其使用方式与传统发行版(如 Ubuntu)不同:
- 开发在容器中进行,常见的容器模式包括:
- 使用 VSCode、Jetbrains 或 neovim 的 Devcontainers
- 用于带图形界面(GUI)的开发容器管理的 Podman Desktop。这是一个podman/vscode 配置的示例 —— 这些扩展已包含在 Bluefin 中
- 使用 Podman 或 Docker 的命令行容器管理。
- 命令行应用使用 homebrew 安装
- 预配置了 Ubuntu、Fedora 和 Wolfi 的即用容器。使用你想要的任何发行版。
这与传统发行版的区别在于,它让开发过程与操作系统无关。Bluefin 上没有 apt install php 的等价物;开发直接通过 IDE 使用 podman 或 docker 完成。
我们也坚信通过 uv 轻松访问其他繁荣的生态系统(如 Python)。我们放弃"一个 Linux 系统包管理器统治一切",因为这些生态系统本身就是巨头。批评者会说我们发布了太多包管理器,我们说我们发布的不是包管理器,我们发布的是用户想要的生态系统。这些现代包管理器正是为运行在容器上的世界而设计的,因为事实确如此。而我们希望它们在开箱即用的桌面上就能用。
我们选择云原生模式,因为容器中的本地开发会转化为在现代基础设施上部署容器。

bluefin-dx(以及 aurora-dx)中的模式围绕 devcontainers 展开。由于 devcontainers 存在于项目的 git 仓库中,它们可以部署在任何操作系统上:Linux、macOS 或 Windows(通过 WSL)。这促进了"默认分布式"开发,并避免 Linux 用户在与使用其他操作系统的同事协作时成为"异类"。
每个项目都包含一个声明式环境,让用户开箱即用即以"最佳实践"云原生工作流起步。Ultimate Guide to Dev Containers 很好地阐述了使用 devcontainers 的优势。这意味着开发环境保存在版本控制中,而不是耦合到宿主机上。
也可以使用 Homebrew 安装开发工具。但建议避免这样做,而是在版本控制中声明项目的依赖。有时它如此方便,这样也行。
Mise 是一个让你为项目安装应用特定版本的工具(例如一个项目用 node 20,另一个用 node 21)。你可以使用仓库中的 mise.toml 文件来追踪你所需要的特定工具。这些也可以全局安装。它可以类似 devcontainers 地使用,但不要求你进入容器才能使用。
你始终可以使用你想要的任何东西。你不需要在这里使用所有东西才能高效 —— 归根结底这是你的电脑,这是一套默认值。
启用开发者模式
启用开发者模式是一个两步过程:
步骤 1:开启它
运行 ujust devmode 来启用或禁用 dx 模式,然后重启:

步骤 2:把自己加入正确的组
运行 ujust dx-group —— 把你的用户账户加入正确的组。然后重启。这一步只需要做一次。
与所有 Universal Blue 镜像一样,切换是原子的,可以根据使用场景在模式之间干净地切换。
功能
带 Docker 的 Visual Studio Code
Visual Studio Code 作为默认 IDE 包含在镜像中。它已预装 devcontainers extension。这是推荐的开发者体验,如果你是容器化开发的新手,从这里开始!
- Dev Containers Documentation - 你可以跳过大部分安装说明,直接前往教程
- Dev Containers Specification
- Beginner's Series to: Dev Containers - 来自VS Code YouTube channel的优秀入门教程
默认包含最新的 Docker Engine,并设置为 VSCode 的默认容器运行时。使用 docker compose 也是入门容器开发的绝佳方式,是在 devcontainers 不合你口味时的一个选项。请注意,Docker Desktop 不可用,图形化的容器管理请用 Podman Desktop。
在 Dev Containers 中使用 Podman
Dev Containers 扩展默认使用 Docker。要切换到 Podman,在 VS Code 中添加以下设置:
"dev.containers.dockerComposePath": "podman-compose"
"dev.containers.dockerPath": "podman"
"dev.containers.dockerSocketPath": "/run/user/1000/podman/podman.sock"
运行 systemctl --user status podman.socket 来确认你用户 ID 的 socket 路径。对于 rootful Podman,使用 /run/podman/podman.sock。
SELinux 故障排查: 如果你的 devcontainer 因 SELinux 访问错误而无法启动(检查 ausearch -m avc -ts recent),运行 restorecon -R -v $HOME/.local/share。对于卷挂载错误,运行 restorecon -R -v /path/to/your/project。仅在万不得已时,你可以在 .devcontainer/devcontainer.json 中为特定容器禁用 SELinux 标签:
{
"runArgs": ["--security-opt", "label=disable"]
}
Podman 与 Podman Desktop

Podman Desktop 包含在内以提供容器管理。查看 Podman Desktop 的documentation 了解更多信息。所有上游 podman 工具都包含在内。这是默认的系统容器运行时,也是为新用户推荐的开发者配置。
内置性能工具
Sysprof 作为系统级性能分析器包含在内。以及 Brendan Gregg 的 推荐的 CLI 工具:
bcc、bpftrace、iproute2、nicstat、numactl、sysprof、sysstat、tiptop、trace-cmd和util-linux
感谢 Ubuntu 和 Canonical 提供的详细规范及其理由。项目希望性能工具的纳入会带来更好的上游软件。
生活质量改进
- 一系列精心策划的等宽字体
- 用于自动化任务的 Just 任务运行器
fish和zsh作为可选 shell 提供
Pet Containers
Pet container 可通过 distrobox 以交互式终端的形式提供。通过附带的 DistroShelf 应用管理它们,该应用可在桌面左上角的 logomenu 的"Containers"下找到:

使用 DistroShelf 的界面,从列表中的任何发行版创建你自己的 pet container:

对于命令行战士,你可以使用终端内置的容器支持来管理容器:

附带的 Terminal 包含一个宿主机终端,你可以快速在容器和宿主机之间切换。
- 默认终端是 Ptyxis,它内置了 distrobox 容器的集成。它在菜单中被别名为"Terminal"。默认映射到 Ctrl-Alt-Enter 以便快速启动
- Podman Desktop - 面向应用开发者的容器和 Kubernetes
- Pods 也是以图形方式管理你容器的绝佳方式
其他工具
JetBrains
ujust jetbrains-toolbox 会获取并安装 JetBrains Toolbox 应用,由它管理 JetBrains 工具集的安装。该应用会处理 JetBrains 产品的安装、移除和升级,且完全在你的 home 目录中处理,与操作系统镜像无关。我们不建议使用 JetBrains 的 flatpak。
- 查看 JetBrains documentation 了解如何将这些工具与 podman 运行时集成。
- 查看如何用 devcontainers 设置 JetBrains
- Uninstallation instructions
JetBrains 博客还有更多关于 JetBrains Dev Containers 支持的信息:
Neovim
运行 brew install neovim devcontainer,然后按照这些指引进行 devcontainer 设置:
虚拟化与容器运行时
- virt-manager 及相关工具(KVM、qemu)
- Incus 提供系统容器
本地应用开发
GNOME Builder 是创建应用的推荐应用栈。
Kubernetes
通过 Homebrew 安装 Kubernetes 管理员常用的一整套工具(brew install <name>):
| Name | Description |
|---|---|
| cdk8s | 使用熟悉的编程语言定义 Kubernetes 应用和可复用抽象 |
| dagger | 用于 CI/CD 流水线的便携式 devkit |
| grype | 用于容器镜像和文件系统的漏洞扫描器 |
| helm | Kubernetes 的包管理器 |
| k0sctl | 用于引导和管理 k0s Kubernetes 集群的命令行工具 |
| k3sup | 用于在任何本地或远程 VM 上安装 k3s 的轻量实用程序 |
| k9s | 提供终端 UI 来与你的 Kubernetes 集群交互 |
| kind | 使用 Docker 容器"节点"运行本地 Kubernetes 集群的工具 |
| kubectl | Kubernetes 命令行工具,允许你对 Kubernetes 集群运行命令 |
| kubectx | 在 kubectl 上在上下文(集群)之间切换更快的工具 |
| pack | 使用 Cloud Native Buildpacks 构建应用的 CLI 工具 |
| syft | 用于从容器镜像和文件系统生成软件清单(SBOM)的 CLI 工具和库 |
CNCF 工具
要访问全套Cloud Native Computing Foundation 工具,运行 ujust cncf 来浏览并从一个包含 89 个 CNCF 项目的丰富集合中安装,涵盖已毕业、 incubating 和 sandbox 工具。其中包括 Argo、Cilium、Envoy、Flux、Istio、Linkerd、Prometheus 等。
字体
通过 Homebrew 安装精心策划的开发者字体(brew install --cask <font-name>),或使用附带的 Embellish 工具:
使用 Finpilot 构建自定义镜像
如果你想基于 Bluefin 创建自己的可定制的、可启动的 bootc 操作系统镜像:
- finpilot 提供了用于构建自定义 Linux 镜像的官方模板仓库。
- 实现了用于分层包、配置文件和桌面定制的阶段性容器构建架构。
- 包含用于自动化构建、通过 Cosign 进行 keyless 镜像签名、以及发布到 GitHub Container Registry(GHCR)的 GitHub Actions 工作流。
- 要部署你的自定义镜像,使用以下命令切换:
sudo bootc switch ghcr.io/<your-username>/<your-image>:latest --enforce-container-sigpolicy