transfused Docker 镜像下载 - 轩辕镜像
transfused 镜像详细信息和使用指南
transfused 镜像标签列表和版本信息
transfused 镜像拉取命令和加速下载
transfused 镜像使用说明和配置指南
Docker 镜像加速服务 - 轩辕镜像平台
国内开发者首选的 Docker 镜像加速平台
极速拉取 Docker 镜像服务
相关 Docker 镜像推荐
热门 Docker 镜像下载
transfused 镜像详细信息
transfused 镜像标签列表
transfused 镜像使用说明
transfused 镜像拉取命令
Docker 镜像加速服务
轩辕镜像平台优势
镜像下载指南
相关 Docker 镜像推荐
transfused 镜像详细说明
transfused 使用指南
transfused 配置说明
transfused 官方文档
osxfs
镜像概述和主要用途
osxfs 是一个 Linux 文件系统,专为解决 Docker for Mac 与其封装的 Linux 虚拟机(VM)之间的 -v 绑定挂载问题而设计。它提供 FUSE(用户空间文件系统)实现,支持容器中的 inotify 事件监听,并可副存储文件节点所有权元数据。这些特性通过支持使用 inotify 监听文件系统事件的 Linux 容器,以及允许 Docker for Mac 客户端以普通用户身份在 macOS 上运行,满足容器开发场景需求。
核心功能和特性
系统组件
osxfs 系统包含两个主要组件:
- transfused:Linux FUSE 协议代理,负责与 virtio vsocks 通信
- com.docker.osxfs:macOS 程序,运行 Linux FUSE 服务器
文件系统消息流程
从用户应用发起的文件系统操作,典型流程如下:
- Linux VFS 通过系统调用接收文件系统操作
- FUSE 驱动从 VFS 多路分解器被调用
- FUSE 通过预协商的
/dev/fuse文件描述符发送 FUSE 消息 - transfused 在代理线程中读取 FUSE 消息,并通过
AF_VSOCK套接字(virtio vsock)重传 - virtio vsock 将消息放入环形缓冲区等待传输
- virtio vsock 触发硬件故障以通知 hypervisor
- HyperKit 接收硬件故障并从队列中取出消息
- HyperKit 将消息转发至 UNIX 域套接字
- osxfs 从 UNIX 域套接字读取消息并解析
- osxfs 执行 macOS 文件系统操作以完成请求
- osxfs 构造包含请求错误或结果的数据包,并通过 UNIX 域套接字传输
- HyperKit 从 UNIX 域套接字读取响应
- HyperKit 将响应放入环形缓冲区
- HyperKit 在 Linux 中触发中断
- virtio vsock 接收中断并从队列中取出响应
- virtio vsock 通过
AF_VSOCK套接字将响应发送至 transfused - transfused 在独立线程中读取响应,缓冲至完整消息后写入
/dev/fuse文件描述符 - FUSE 接收响应并为阻塞的用户空间线程排队
- FUSE 中的用户空间线程解除阻塞,从队列中取出并解码响应
- 响应(必要时修改 VFS 状态)通过解除阻塞的系统调用返回至调用进程
上述流程延迟约为 100 微秒。
关键特性
- inotify 事件支持:允许容器内应用通过 inotify 监听文件系统事件
- 元数据管理:副存储文件节点所有权元数据,确保容器内文件权限与 macOS 主机协调
- 跨系统通信:基于 virtio vsock 和 HyperKit 实现 Linux VM 与 macOS 主机间的高效消息传输
- 动态挂载控制:内置服务器监听容器挂载/卸载请求,动态启用/禁用 FSEvents 监听器以触发 inotify 事件
使用场景和适用范围
适用场景
- Docker for Mac 用户需在 Linux 容器中使用 inotify 监听文件变更(如前端开发热重载、日志监控)
- 需确保容器内文件所有权元数据正确映射至 macOS 主机的场景(如多用户协作、权限敏感应用)
- 需在 macOS 上以普通用户身份运行 Docker for Mac 客户端,同时保持容器内文件系统操作兼容性
适用范围
仅适用于 Docker for Mac 环境,作为 Linux VM 与 macOS 主机间的绑定挂载中间层,不支持其他操作系统(如 Linux 或 Windows 主机)。
详细使用方法和配置说明
osxfs 作为 Docker for Mac 的内置组件,无需手动部署。用户通过 Docker 挂载命令间接使用其功能,主要通过配置挂载一致性模式优化性能。
一致性模式配置
Docker 引擎支持通过一致性标志(per-container-mount 级别)指定挂载一致性策略,osxfs 根据策略调整缓存行为以平衡性能与一致性。支持以下模式:
| 模式 | 说明 |
|---|---|
delegated | macOS 主机为文件系统状态权威源,容器内写入延迟同步至主机,性能最优 |
cached | 容器内读取使用缓存,写入立即同步至主机,平衡性能与一致性 |
strict | 完全同步,容器与主机文件系统状态严格一致,性能最低但一致性最高 |
使用示例:
通过 docker run 命令挂载目录时指定一致性模式:
bashdocker run --rm -v $(pwd):/app:delegated alpine sh -c "echo 'test' > /app/file.txt"
性能测量工具
osxfs 提供内置工具用于性能分析,帮助定位延迟瓶颈。
perfstat
记录 osxfs 与 transfused 间消息的单调时间延迟和类型,需通过 osxfs 二进制子命令调用。
使用示例:
测量 100,000 次 1KiB 块写入操作的性能:
bash# 假设 osxfs_ctl.native 路径为 Docker for Mac 内置路径 /Applications/Docker.app/Contents/Resources/bin/osxfs_ctl.native perfstat --export /Users perfstat-dd.dat -- docker run --rm -v $(pwd):/host -w /host alpine dd if=/dev/zero of=zeros bs=1024 count=***
perfstat_analyze
解析 perfstat 生成的日志文件,输出性能摘要报告。
使用示例:
分析上述 perfstat-dd.dat 日志:
bash/Applications/Docker.app/Contents/Resources/bin/osxfs_ctl.native perfstat_analyze perfstat-dd.dat
典型输出:
Elapsed: 19.796321007s Messages: *** (0 trimmed, 2 with open transfused data) HyperKit CPU: 129.7% (25.67s) osxfs CPU: 52.7% (10.44s) Time in osxfs with 0 ops outstanding: 72.4% (14.327s) ... Message FUSE_WRITE received *** (100.0% txns 99.9% t) (50th/90th/98th/100th): 52.569us 65.289us 102us 6.972ms
ping 功能
通过向 osxfs 进程发送 SIGUSR2 信号,可触发 osxfs 与 transfused 间的基础 ping 测试,评估往返延迟。
性能优化
数据路径延迟优化
osxfs 性能瓶颈主要源于跨系统消息传输延迟,关键优化方向包括:
- Linux 内核调度:非 tickless 内核或单 vCPU 配置可能降低调度开销,减少延迟
- virtio vsock 改进:启用延迟信用更新(deferred credit updates)减少消息负载(参见 docker/hyperkit#92)
- HyperKit 通信优化:替换 UNIX 域套接字为共享内存或 Mach 端口以降低 IPC 延迟
- osxfs 线程模型:减少基于 LWT(轻量级线程)的协作式多线程导致的系统调用开销
缓存策略
通过减少跨系统消息数量和路径长度提升性能,osxfs 利用 Linux VFS 缓存机制,结合一致性模式动态调整缓存行为:
- 目录项缓存(dcache):缓存目录结构,减少重复目录查询
- inode 属性缓存:缓存
stat元数据,降低元数据查询延迟 - 写回缓存:未来计划支持 per-node 写回缓存(当前 Linux FUSE 仅支持全局 mount 级配置)
缓存策略需根据一致性模式调整:delegated 模式启用最激进缓存,strict 模式禁用缓存以保证强一致性。
总结
osxfs 作为 Docker for Mac 的核心组件,通过 FUSE 协议代理和跨系统通信机制,解决了 Linux 容器与 macOS 主机间的绑定挂载兼容性问题,支持 inotify 事件和元数据管理。用户可通过调整一致性模式平衡性能与一致性,并使用 perfstat 工具分析和优化文件系统性能。
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务
常见问题
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
轩辕镜像下载加速使用手册
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
登录仓库拉取
通过 Docker 登录认证访问私有仓库
Linux
在 Linux 系统配置镜像加速服务
Windows/Mac
在 Docker Desktop 配置镜像加速
Docker Compose
Docker Compose 项目配置加速
K8s Containerd
Kubernetes 集群配置 Containerd
宝塔面板
在宝塔面板一键配置镜像加速
群晖
Synology 群晖 NAS 配置加速
飞牛
飞牛 fnOS 系统配置镜像加速
极空间
极空间 NAS 系统配置加速服务
爱快路由
爱快 iKuai 路由系统配置加速
绿联
绿联 NAS 系统配置镜像加速
威联通
QNAP 威联通 NAS 配置加速
Podman
Podman 容器引擎配置加速
Singularity/Apptainer
HPC 科学计算容器配置加速
其他仓库配置
ghcr、Quay、nvcr 等镜像仓库
专属域名拉取
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429