mirror of
https://github.com/imjasonh/ocifuse
synced 2026-07-07 00:12:43 +00:00
Four user-visible additions, all working end-to-end against Docker Hub: - Per-ref platform: append "~os-arch[-variant]" to a tag or digest segment (e.g. "ubuntu:22.04~linux-arm64") to select a specific manifest from a multi-arch index without touching PLATFORM. - Synthetic "@@meta/" directory at every image root, exposing "@@meta/digest" (the manifest digest) and "@@meta/layers/<sha256>/" (raw per-layer tar contents). Inside each layer directory, a nested "@@meta/layer-digest" file. - Per-layer view (under @@meta/layers/<sha256>/) shows the raw layer including whiteout markers. Built from a new merge.LayerTree helper that synthesizes parent dirs without applying whiteout filtering. - Proactive sibling expansion: when a tag access resolves to a multi-arch index, the parent directory is populated with "<repo>:<tag>~<os>-<arch>" symlinks pointing at each platform's digest. Subsequent readdir shows them, so bash tab completion of "<tag>~<TAB>" enumerates the platforms (after at least one access of the bare tag). Also fixed a pre-existing fspath bug: a segment containing "." was classified as a registry, which broke shorthand tags with dotted versions like "ubuntu:22.04". The new rule is: a ":" with all-digit suffix means host:port, otherwise it's a name:tag pair regardless of dots.
965 B
965 B
Future work
Medium-term
- Tag listing — populate repo directories from the registry catalog API where the registry permits.
- Prefetch heuristics — read-ahead within a layer for sequential access; speculative fetch of neighboring files in the same tar.
- Content-addressed dedup — share file content across images that reuse identical blobs and offsets.
- macFUSE polish — once Linux is solid, exercise on darwin, document setup, work around any kext quirks.
- Tag→digest disk persistence with TTL — fresh-mount tag resolution still costs ~200ms per ref (correctly going to network because tags move). A short-TTL on-disk record could amortize across restarts within a window without sacrificing correctness.
Far Future
- Write support — overlay / copy-on-write semantics on top of the read-only base.
- Local OCI layout sources — read from on-disk OCI layouts and Docker daemon, not just remote registries.