首页/新闻资讯/正文详情

Fleet 本地开发指南:用 fleetd-linux 构建并运行 Linux 版 fleetd Docker 容器

发布时间:2026/9/21 4:01:05 来源:云帆数科 栏目:资讯中心
Fleet 本地开发指南:用 fleetd-linux 构建并运行 Linux 版 fleetd Docker 容器
后端前端企业应用运维网络安全【免费下载链接】fleetOpen device management项目地址https://gitcode.com/GitHub_Trending/fl/fleet点击查看免费下载在 Fleet 的日常开发与测试中常常需要快速模拟一批连接到本地 Fleet 实例的 Linux 主机。tools/fleetd-linux目录正是为此准备的它提供了一套脚本与 Dockerfile把安装好 fleetd即 orbit osqueryd Fleet Desktop的 Linux 镜像构建出来并让容器内的 fleetd 通过host.docker.internal直连宿主机上运行的 Fleet 服务。读完本文你将掌握如何一键构建覆盖 Ubuntu、Fedora、Debian、CachyOS 四种发行版的 fleetd 镜像如何通过环境变量切换 Fleet 服务地址与 TUF 更新通道以及如何用docker compose拉起这些容器完成注册入网与脚本执行联调。一、fleetd-linux 是什么容器化的 Linux 测试主机tools/fleetd-linux是 Fleet 仓库中的一个开发工具目录定位与 tools/osquery 类似后者用容器化osqueryd实例来测试 Fleet而前者更进一步——容器里装的不是裸的 osquery而是完整的 fleetd 组件栈orbit 守护进程、osqueryd、Fleet Desktop因此可以用于演示和验证更多端到端能力例如在 Linux 主机上执行脚本、下发配置等。在 tools/README.md 的工具总表中fleetd-linux/被归类为 Release Distribution发布与分发下的 Linux fleetd packaging其目录构成如下tools/fleetd-linux/ ├── README.md # 构建与运行说明本文主体 ├── build-all.sh # 一键构建脚本打包 构建 4 个发行版镜像 ├── docker-compose.yml # 批量拉起容器并注册到本地 Fleet ├── run-fleetd.sh # 容器 ENTRYPOINT注入 enroll secret 后启动 orbit ├── ubuntu-24.04/Dockerfile ├── fedora-43/Dockerfile ├── debian-13.4/Dockerfile └── cachyos/DockerfileREADME 中也给出了项目作者对未来的设想原文 PS 说明将来可以把这些镜像推送到 Docker Hub并把其中一部分接入fleetctl preview用于在预览环境里演示 Linux 主机上的脚本执行能力。这解释了该工具链的存在动机——为 Linux 侧的脚本执行、策略下发等特性准备可复现的演示与联调环境。二、构建 fleetd Docker 镜像2.1 一键构建全部镜像在仓库根目录执行./tools/fleetd-linux/build-all.sh该命令会依次完成两阶段工作见 build-all.sh用fleetctl package分别生成三种 Linux 包fleet-osquery_amd64.debDebian/Ubuntu 系fleet-osquery_amd64.rpmFedora 系fleet-osquery_amd64.pkg.tar.zstArch 系CachyOS 使用依次构建四个 Docker 镜像均为linux/amd64平台fleetd-ubuntu-24.04fleetd-fedora-43fleetd-debian-13.4fleetd-cachyos执行脚本前需要本地已安装fleetctl与 Docker。脚本开头的set -euo pipefail保证任一步失败即中断避免带着残缺的中间产物继续构建。2.2 打包参数详解build-all.sh中每个包都通过fleetctl package生成核心参数保持一致含义如下参数说明--typedeb/rpm/pkg.tar.zst目标包格式与各 Dockerfile 中的安装命令一一对应--enable-scripts在包中启用脚本执行能力是容器内演示 Linux 脚本功能的前提--fleet-url$FLEET_URLfleetd 连接的 Fleet 服务地址默认见下文--enroll-secretplaceholder先用占位符placeholder写入配置容器启动时由run-fleetd.sh用真实密钥替换--disable-open-folder关闭安装后的打开文件夹行为避免在容器/CI 环境中产生副作用--fleet-certificate../osquery/fleet.crt仅本地地址时传入指定 Fleet 服务的 TLS 证书--update-url$UPDATE_URL覆盖 fleetd 组件的 TUF 更新仓库地址--orbit-channel/--desktop-channel/--osqueryd-channel分别指定 orbit、Fleet Desktop、osqueryd 的更新通道--debug输出打包调试日志2.3 指向本地 Fleet 服务FLEET_URL与自签名证书构建脚本默认值定义在 build-all.shFLEET_URL${FLEET_URL:-https://host.docker.internal:8080}即默认让容器内的 fleetd 连接宿主机:8080端口运行的 Fleet 开发实例。由于host.docker.internal是 Docker DesktopmacOS/Windows提供的宿主机别名开发环境一般用自签证书脚本专门做了处理using_localhost()函数会判断FLEET_URL是否以https://localhost:、https://127.0.0.1:或https://host.docker.internal:开头命中本地地址时追加--fleet-certificate../osquery/fleet.crt参数指向 tools/osquery/fleet.crt。该证书与密钥tools/osquery/fleet.key是专门为host.docker.internal域名签发的本地测试自签名证书tools/osquery/README.md 中明确强调它仅用于本地测试严禁在生产环境使用。如果要把容器连到其他 Fleet 服务非本地地址直接覆盖FLEET_URL即可此时脚本不会附带任何--fleet-certificateFLEET_URLhttps://fleet.example.com ./tools/fleetd-linux/build-all.sh2.4 使用 staging TUF 的 edge 通道Fleet 的组件更新走 TUFThe Update Framework机制仓库内对应工具位于 tools/tuf。若希望容器内的 fleetd 从 staging 环境拉取edge通道的最新构件可同时覆盖三个通道变量UPDATE_URLhttps://updates-staging.fleetdm.com ORBIT_CHANNELedge DESKTOP_CHANNELedge OSQUERYD_CHANNELedge ./tools/fleetd-linux/build-all.shUPDATE_URL会通过--update-url写入包配置ORBIT_CHANNEL、DESKTOP_CHANNEL、OSQUERYD_CHANNEL则分别控制 orbit、桌面端、osqueryd 的通道。这是开发人员在发布新版本前先在容器化 Linux 主机上验证 edge 构建的常用手段。三、四个发行版镜像的构建细节每个 Dockerfile 都遵循同一模式把上一步生成的安装包和run-fleetd.sh拷入镜像、安装ca-certificates、执行系统对应的包安装命令最后以run-fleetd.sh作为ENTRYPOINT。Ubuntu 24.04ubuntu-24.04/DockerfileFROM ubuntu:24.04 COPY fleet-osquery_amd64.deb / COPY run-fleetd.sh / RUN chmod x /run-fleetd.sh RUN apt-get update apt-get install -y ca-certificates RUN dpkg --install /fleet-osquery_amd64.deb ENTRYPOINT [/run-fleetd.sh]Debian 13.4debian-13.4/Dockerfile与 Ubuntu 相同使用deb包与apt-get但基础镜像通过 digest 固定版本debian:13.4sha256:...保证构建可复现。Fedora 43fedora-43/Dockerfile使用rpm包安装命令为dnf install --assumeyes /fleet-osquery_amd64.rpm同样通过 digest 固定基础镜像。CachyOScachyos/Dockerfile使用 Arch 系打包格式pkg.tar.zst先pacman -Sy --noconfirm --needed ca-certificates再pacman -U --noconfirm安装本地包基础镜像同样以 digest 固定。可以看到镜像内容非常精简——只额外安装了ca-certificatesfleetd 连接 Fleet 服务与 TUF 仓库都需要验证 TLS 证书其余运行依赖全部由 fleetd 安装包自包含。四、运行 fleetd 容器并注册到本地 Fleet4.1 拉起全部容器构建完成后向本地 Fleet 实例注册这些容器化 Linux 主机ENROLL_SECRET... docker compose -f ./tools/fleetd-linux/docker-compose.yml upENROLL_SECRET是 Fleet 的注册密钥可在 Fleet UI 的 Manage hosts 页面获取或通过fleetctl get enroll-secret查询见 tools/osquery/README.md 中的说明。compose 文件docker-compose.yml中通过${ENROLL_SECRET:?ENROLL_SECRET must be set for server authentication}强制要求该变量存在未设置时启动会直接报错。四个服务ubuntu24.04-fleetd、fedora43-fleetd、debian13.4-fleetd、cachyos-fleetd共享同一份默认配置platform: linux/amd64environment注入ENROLL_SECRETcap_add: [SYS_PTRACE]restart: unless-stopped其中SYS_PTRACE的用途在 compose 文件注释里有明确解释允许 osquery 读取它并不拥有的进程的/proc/pid/io否则日志会出现Cannot read /proc/50/io。注释还特别强调刻意避免使用privileged: true因为在 Docker Desktop for Mac 上同时运行多个 privileged 服务会互相冲突、导致环境崩溃——这是该工具链针对 macOS 开发环境的务实取舍。4.2 容器启动流程run-fleetd.sh 如何工作每个容器的ENTRYPOINT都是 run-fleetd.sh它完成了占位符密钥替换 → 加载环境文件 → 启动 orbit三步#!/bin/bash set -euo pipefail : ${ENROLL_SECRET:?ENROLL_SECRET must be set} awk -v s$ENROLL_SECRET {gsub(/placeholder/, s)}1 \ /etc/default/orbit /etc/default/orbit.new \ mv /etc/default/orbit.new /etc/default/orbit set -a; . /etc/default/orbit; set a exec /opt/orbit/bin/orbit/orbit首先校验ENROLL_SECRET必须存在然后用awk把打包阶段写入/etc/default/orbit环境文件中的placeholder字符串原位替换成真实注册密钥通过set -a; . /etc/default/orbit把环境文件内容导入当前 shell 环境最后exec启动/opt/orbit/bin/orbit/orbitorbit 守护进程后续由 orbit 拉起 osqueryd。/etc/default/orbit正是 fleetd 在 Linux 上的系统级环境文件orbit 的 systemd unit 模板orbit/pkg/packaging/linux_shared.go中通过EnvironmentFile/etc/default/orbit加载它并以ExecStart/opt/orbit/bin/orbit/orbit启动服务。容器内的执行路径与真实 Linux 主机上的 systemd 服务完全一致只是绕过了 systemd、由exec直接接管为 PID 1 进程。4.3 注册后可以验证什么容器成功注册后Fleet UI 的 Manage hosts 页面会看到多台 Linux 主机。由于打包时带了--enable-scripts你可以直接对这些主机执行脚本例如通过 Fleet 的策略自动化或手动运行脚本验证 Linux 平台的脚本执行链路——这正是 README 中提到让 fleetd 镜像接入fleetctl preview以演示 Linux 脚本执行的初衷。五、使用技巧与注意事项本地 vs 远端 Fleet 地址默认https://host.docker.internal:8080仅适用于宿主机上跑本地 Fleet 的场景指向远端服务器时用FLEET_URLhttps://fleet.example.com覆盖此时不再附带自签名证书build-all.sh。本地证书仅限测试tools/osquery/fleet.crt 与fleet.key是专为host.docker.internal签发的测试证书README 明确警告不可用于生产tools/osquery/README.md。Windows 包格式差异fleetd 打包支持多种格式Linux 侧在本工具中只用deb、rpm、pkg.tar.zst其他平台如 Windows MSI由 tools/wix-docker 等相关工具处理。与 tools/osquery 的关系tools/osquery 是更早期的容器化测试方案裸osquerydfleetd-linux是它的完整 fleetd升级版——两者都以 Docker 快速模拟多台 Linux 主机为手段区别在于后者含 orbit 与 Fleet Desktop能覆盖更完整的 agent 生命周期。重复使用与清理docker compose up会复用既有容器保留状态需要全新状态时参考 tools/osquery/README.md 的做法docker compose down/docker compose rm后重新up若想单独拉起某个发行版也可docker compose run ubuntu24.04-fleetd按需启动。六、总结tools/fleetd-linux为 Fleet 开发者提供了一条构建 → 注册 → 联调的完整容器化 Linux 测试链路build-all.sh负责用fleetctl package生成三种 Linux 安装包并构建四个发行版镜像docker-compose.yml配合ENROLL_SECRET一键把容器注册进本地 Fleetrun-fleetd.sh则在容器启动时完成注册密钥注入并接管 orbit 进程。掌握FLEET_URL、UPDATE_URL、ORBIT_CHANNEL、DESKTOP_CHANNEL、OSQUERYD_CHANNEL等环境变量的组合用法你就能在几分钟内搭起一套覆盖多发行版、可随时重置的 Linux 测试主机环境为脚本执行、策略下发、edge 通道验证等开发工作提供可靠支撑。赞分享后端前端企业应用运维网络安全【免费下载链接】fleetOpen device management项目地址https://gitcode.com/GitHub_Trending/fl/fleet点击查看免费下载相关推荐在 Fleet 中运行本地构建的 fleetd基于本地 TUF 仓库的 macOS 开发调试完整指南在 Fleet 中运行本地构建的 fleetd基于本地 TUF 仓库的 macOS 开发调试完整指南 本文面向 Fleet 开源项目的 macOS 贡献者完后端前端企业应用运维网络安全Fleet 中如何卸载 fleetdFleet 代理macOS、Windows、Linux 本地与远程卸载完整指南Fleet 中如何卸载 fleetdFleet 代理macOS、Windows、Linux 本地与远程卸载完整指南 Fleet 的设备管理代理 fleet后端前端企业应用运维网络安全Fleetd for Chrome在 ChromeOS 设备上运行 Fleet 代理的构建、调试与发布指南Fleetd for Chrome在 ChromeOS 设备上运行 Fleet 代理的构建、调试与发布指南 导读 本文以开源仓库 ee/fleetd chr后端前端企业应用运维网络安全上一篇2025最强Ebitengine学习路线从零基础到独立开发跨平台2D游戏下一篇如何快速配置Hydra LauncherJSON URL下载源管理完全指南 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Material Components Web Tooltip 完整指南:安装、无障碍、定位算法与主题定制
Material Components Web Tooltip 完整指南:安装、无障碍、定位算法与主题定制

Material Components Web Tooltip 完整指南:安装、无障碍、定位算法与主题定制 【免费下载链接】material-components-web Modular and customizable Material Design UI components for the web 项目地址: https://gitcode.com/gh_mirrors/ma/material-component… · 2026/9/21 4:00:05

Chrome Apps UDP 网络访问实战:基于 chrome-extensions-samples 的 UDP Echo 客户端示例解析
Chrome Apps UDP 网络访问实战:基于 chrome-extensions-samples 的 UDP Echo 客户端示例解析

Chrome Apps UDP 网络访问实战:基于 chrome-extensions-samples 的 UDP Echo 客户端示例解析 【免费下载链接】chrome-extensions-samples Chrome Extensions Samples 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-extensions-samples 本指南以 chro… · 2026/9/21 4:00:04

security-audit-skill伴生文件精读:Universal moves与Validation rules两大板块
security-audit-skill伴生文件精读:Universal moves与Validation rules两大板块

security-audit-skill伴生文件精读:Universal moves与Validation rules两大板块 【免费下载链接】security-audit-skill A coding-agent skill for multi-phase security audits with independently verified, machine-readable findings 项目地址: https://gitco… · 2026/9/21 4:00:04

i网站建设踩坑实录:被黑后选哪家更靠谱
i网站建设踩坑实录:被黑后选哪家更靠谱

i网站建设踩坑实录:被黑后选哪家更靠谱 上周凌晨三点,我的手机疯狂震动。客户在群里@我,说官网突然弹出一堆博彩广告,百度一搜全是挂马链接。那一刻,冷汗直接下来了。… · 2026/9/21 6:04:19

php做网站页面在哪做一文搞懂避坑指南
php做网站页面在哪做一文搞懂避坑指南

php做网站页面在哪做一文搞懂避坑指南 找建站公司报价三万八,回来一看还是套模板?很多甲方朋友在这一步就栽了跟头,怕被坑高价,又怕自己不懂技术被忽悠。别慌,今天咱们不聊虚的,直接拆解 php做网站页面在哪做 的底层逻辑, 一文搞懂… · 2026/9/21 5:48:20

Simulink与FlightGear联合仿真:飞行器控制算法三维可视化验证平台搭建
Simulink与FlightGear联合仿真:飞行器控制算法三维可视化验证平台搭建

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 5:38:40

测序数据可视化:从BAM到bigWig的UCSC工具链实战指南
测序数据可视化:从BAM到bigWig的UCSC工具链实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 5:37:39

反激电源TL431补偿器设计与波特图调试实战
反激电源TL431补偿器设计与波特图调试实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 5:36:39

MATLAB配置MinGW编译器全指南:从安装到排错一次搞定
MATLAB配置MinGW编译器全指南:从安装到排错一次搞定

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 5:36:39

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化
Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡… · 2026/9/21 0:02:39

Word表格编号全攻略:从列表编号到题注交叉引用
Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技… · 2026/9/21 0:02:39

从第一个站到第二个站:独立开发者的静态网站选型与落地实践
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&… · 2026/9/20 0:00:41

Claude Code 按智谱AI指南装完,ANTHROPIC_BASE_URL 改走 TaoToken 兼容通道行不行
Claude Code 按智谱AI指南装完,ANTHROPIC_BASE_URL 改走 TaoToken 兼容通道行不行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 0:00:18

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程
agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and … · 2026/9/21 0:00:18

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,… · 2026/9/21 0:00:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码