Skip to content

Bowser1704/image-service

 
 

Repository files navigation

Nydus: Dragonfly Container Image Service

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.

Container Cold Startup

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 Binary

# build debug binary
make
# build release binary
make release
# build static binary with docker
make docker-static

Build Nydus Image

Build Nydus image from directory source: Nydus Image Builder.

Convert OCI image to Nydus image: Nydusify.

Build Nydus Snapshotter

Build and run Nydus snapshotter: Nydus Snapshotter

Run Nydusd Daemon

Run Nydusd Daemon to serve Nydus image: Nydusd.

Learn Concepts and Commands

Browse the documentation to learn more. Here are some topics you may be interested in:

Community

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!

  • Slack

    Join our Slack workspace

  • Dingtalk

    Join nydus-devel group by clicking URL from your phone.

    You can also search our talking group by number 34971767 and QR code

About

Dragonfly image service, providing fast, secure and easy access to container images.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 64.6%
  • Go 34.3%
  • Other 1.1%