【开源推荐】比 Docker 更轻、比虚拟机更像操作系统!告别 sudo 的嵌入式容器神器 Bocker

📦 GitHub 开源地址https://github.com/sleet0922/bocker (如果觉得好用,欢迎点个 ⭐ Star 支持一下!)


一、为什么我们还需要一款新的 Linux 容器工具?

在日常开发、测试或搭建隔离环境中,我们常常面临两难的选择:

  • Docker/Podman:擅长运行单一应用容器,但在运行完整的 Linux 操作系统、需要 systemd / OpenRC 多服务后台常驻、或者模拟轻量级虚拟机环境时,容器配置往往极其繁琐。
  • LXD / Incus:非常优秀的系统级容器(System Container)运行时,能提供接近虚拟机的操作系统体验,但安装部署较重,依赖系统守护进程,且普通用户经常遇到权限问题(需要手动配置 sudolxd 用户组),缺乏像 Dockerfile 那样简单直观的声明式构建规范。

为了解决这些痛点,Bocker 应运而生!

Bocker 是一个专门面向 Linux (amd64) 的独立系统容器管理工具。它将容器管理所需的 Incus 守护进程与 LXC 运行时直接嵌入单文件 中,不依赖系统预装的 Incus/LXD 服务,真正实现了**“安装即用、开箱即享、日常操作免 sudo”**的极致体验!


二、Bocker 的核心亮点

1. 🚀 单文件嵌入,零外部依赖

Bocker 创新地将 Incus 守护进程封装在内部,所有容器管理状态存放在独立目录(默认 /var/lib/bocker)。你无需事先在系统上配置繁重的容器后台,也不必担心系统依赖冲突。

2. 🔑 普通用户免 sudo,极其顺畅

使用传统容器工具时,终端里无数次输入 sudo 或因用户组权限报错令人头疼。Bocker 后台通过标准的控制 Socket 进行权限自治转发,在保证宿主机安全隔离的前提下:

  • 日常所有 CLI 命令全免 sudo(如 bocker container listbocker container shell);
  • 终端交互完美保留:内置完整的 PTY 转发机制,上/下键菜单、全屏终端、窗口大小自适应无缝支持!

3. 📝 Incusfile:像写 Dockerfile 一样构建系统容器

LXC/Incus 容器过去最被人诟病的就是镜像构建不够傻瓜。Bocker 引入了 Dockerfile 风格的 Incusfile 声明式构建描述文件

支持诸如 FROMRUNCOPYWORKDIREXPOSEDOMAINAUTOSTARTENTRYPOINT / CMD 以及多阶段构建 (COPY --from)!一行命令 bocker image build 即可轻松打包定制的 Linux 操作系统镜像。

4. 🌐 自动化网络映射与本地域名支持

  • 多种网络模式:支持开箱即用的 nat 模式(隔离外网访问)与 bridge 模式(直接获取局域网 IP)。
  • 域名一键绑定:支持给容器指定本地域名(如 web.test),Bocker 会自动在宿主机 /etc/hosts 中安全同步域名解析,无需手动修改配置文件。

5. 💻 CLI 交互菜单 + Flutter 现代桌面 GUI 双持

  • 智能 CLI:支持完整的 Bash Tab 键自动补全;如果忘记容器名或参数,直接运行 bocker containerbocker template,会弹出优雅的终端交互式选择菜单!
  • Ubuntu 极简 GUI:采用 Flutter Material 3 打造的独立 Linux 桌面图形客户端,直观管理镜像、容器生命周期、日志与网络端口映射。

三、快速上手体验

1. 基础安装 (Debian/Ubuntu)

直接下载官方打包好的 .deb 文件即可一键安装:

# 安装 CLI 与后台服务
sudo dpkg -i bocker.deb

# (可选) 安装桌面 GUI
sudo dpkg -i bocker-gui.deb

安装完成后重新打开终端,所有日常命令均无需 sudo

2. 30 秒拉起一个标准 Debian 操作系统容器

直接列出远程模板并一键安装启动:

# 查看可用模板 (Debian, Ubuntu, Alpine 等)
bocker template list

# 创建并启动一个 Debian 12 容器(使用 NAT 网络)
bocker template install debian:12 --name my-debian --network nat

# 命令行直连进入容器内部 Shell
bocker container shell my-debian

进入容器后,你可以使用原汁原味的 apt update、安装 systemd 服务,体验与独立 Linux 虚拟机别无二致的完整系统环境!


四、写一个 Incusfile 构建自动化 Web 容器

下面是一个使用 Incusfile 构建带 Python Web 服务的操作系统容器示例:

# Incusfile 示例
FROM debian/12
NAME python-web
NETWORK nat

# 安装必要依赖
RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-pip

# 复制业务代码
COPY app.py /opt/app.py

# 设置固定启动服务命令与端口映射
ENTRYPOINT ["/usr/bin/python3", "/opt/app.py"]
CMD ["--port", "8080"]
EXPOSE 8080/tcp

# 绑定宿主机访问域名与自启动设置
DOMAIN web.test
AUTOSTART on

构建与运行命令:

# 构建镜像
bocker image build --name my-web-image Incusfile

# 运行镜像启动容器
bocker image run my-web-image --name web-service

# 在宿主机浏览器直接访问 http://web.test:8080 或使用 curl 验证
curl http://web.test:8080

另外,Incusfile 还原生支持多阶段构建(例如在编译阶段使用 Go/Rust/Node.js 环境,最终只将构建好的二进制文件复制到极简的 Alpine 镜像中),极大缩减系统镜像体积!


五、常用命令速查表

Bocker 采用非常统一直观的 bocker <资源> <动作> 命令行设计:

资源领域 常用命令示例 功能说明
远程模板 bocker template list 列出远端支持的官方发行版模板
bocker template install 交互式选择模板安装并启动容器
本地镜像 bocker image build [Incusfile] 使用 Incusfile 构建镜像
bocker image list 查看本地所有已构建/导入的镜像
bocker image run <image> 通过镜像启动新容器
容器管理 bocker container list 列出所有容器运行状态与 IP
bocker container shell <name> 一键进入容器交互终端
bocker container exec <name> <cmd> 在容器内执行单条命令
bocker container start/stop/restart 容器生命周期控制
bocker container export/import 容器的完整备份与迁移恢复
配置修改 bocker container set <name> port 8080:80/tcp 映射容器端口
bocker container set <name> domain web.test 绑定宿主机解析域名

六、技术架构简析

+-------------------------------------------------------------+
|                用户界面 (普通用户模式,免 sudo)                |
|   +--------------------------+  +-----------------------+   |
|   |  bocker CLI (Golang)     |  | Flutter Desktop GUI   |   |
|   +--------------------------+  +-----------------------+   |
+------------------------------|------------------------------+
                               | Unix Socket (Control / Broker)
+------------------------------v------------------------------+
|               Bocker Background Broker Service              |
|                                                             |
|   +-----------------------------------------------------+   |
|   |  Embedded Incus Daemon & LXC Engine                 |   |
|   |  (Storage / Cgroups / Namespaces / NAT / Bridge)    |   |
|   +-----------------------------------------------------+   |
+-------------------------------------------------------------+

Bocker 底层使用 Go 语言 编写,前端使用了 Google 的 Flutter 框架。通过在后台维护轻量级的进程 Broker 和管理 Unix Socket 权限,成功打破了传统系统容器工具对于权限与守护进程安装的依赖门槛。


七、总结与开源邀请

如果你觉得 Docker 跑完整 OS 太别扭,或者觉得虚拟机资源占用太大,亦或者受够了复杂的权限配置,那么 Bocker 绝对值得一试!

  • 🎁 源码完全开源:欢迎大家体验、提 Issue 和 PR。
  • 🔗 GitHub 仓库https://github.com/sleet0922/bocker
  • 💬 欢迎交流:如果项目对你有帮助,不妨点个 ⭐ Star 给予鼓励!

本文由 Bocker 开源项目团队整理发布,欢迎转载并注明出处。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐