The nydus project implements a user space filesystem on top of a container image format that improves over the current OCI image specification, in terms of container launching speed, image space, and network bandwidth efficiency, as well as data integrity.
The following benchmarking result shows the performance improvement compared with the OCI image for the container cold startup elapsed time on containerd. As the OCI image size increases, the container startup time of using Nydus image remains very short.
Nydus' key features include:
- Container images are downloaded on demand
- Chunk level data deduplication
- Flatten image metadata and data to remove all intermediate layers
- Only usable image data is saved when building a container image
- Only usable image data is downloaded when running a container
- End-to-end image data integrity
- Compatible with the OCI artifacts spec and distribution spec
- Integrated with existing CNCF project Dragonfly to support image distribution in large clusters
- Different container image storage backends are supported
Currently the repository includes following tools:
- A
nydusify
tool to convert an OCI format container image into a nydus format container image - A
containerd-nydus-grpc
daemon to serve as containerd remote snapshotter and setup container rootfs with nydus - A
nydus-image
tool to convert an unpacked container image into a nydus format image - A
nydusd
daemon to parse a nydus format image and expose a FUSE mountpoint for containers to access
# build debug binary
make
# build release binary
make release
# build static binary with docker
make docker-static
Build Nydus image from directory source: Nydus Image Builder.
Convert OCI image to Nydus image: Nydusify.
Build and run Nydus snapshotter: Nydus Snapshotter
Run Nydusd Daemon to serve Nydus image: Nydusd.
Browse the documentation to learn more. Here are some topics you may be interested in:
- A Nydus Tutorial for Beginners
- Our talk on Open Infra Summit 2020: Toward Next Generation Container Image
- Nydus Design Doc
Welcome to share your use cases and contribute to Nydus project. You can reach the community via Dingtalk and Slack
Any bug report, feature requirement, and technique discussion and cooperation are welcomed and expected!