Skip to content

Latest commit

 

History

History
54 lines (37 loc) · 2.53 KB

README.md

File metadata and controls

54 lines (37 loc) · 2.53 KB

Background

Working with docker registry and studying about block chain technology flush me the idea.

What's DDR

DDR is a Decentralized Docker Registry based on P2P technology to supply high concurrency, fast transfer, low cost for docker images distribution and storage.It does not requires any centralized service but docker users can push and pull the docker images from the system as usual.As pure P2P network structure model, each node is producer and consumer.

What's DDRD

Decentralized Docker Registry Daemon(ddrd) is one component of Decentralized Docker Registry system. a daemon running on each P2P node to supply node location, key location, value storage, etc. It uses standard HTTP interface to communicate with other server nodes and client nodes.

More technical detail see my blog.

Why

  1. High concurrency, 100,000+
  2. Reduce network traffic
  3. High availability
  4. Low cost
  5. Long distance transfer
  6. Open source

Reinventing the wheel?

  1. Alibaba Dragonfly

Not a pure distribution service and base on BT protocol, use CDN as storage node.

  1. Tencent FID

Use BT protocol, simulate with Dragonfly but not open source.

  1. DID,Quay and Docket

Make torrent for the whole image,not for layer.

Design Requirements

  1. Zero invading
  2. Standard HTTP APIs
  3. Registry-agnostic

Network

The network uses Kademlia/SKademlia protocol to communicate. The main idea of Kademlia/SKademlia is every node organized by fixed bit ID and the distance between nodes is defined by ID XOR operation.The distance metric can guide you get close to the destination by ask incessantly.

img

Arch

Each node is local registry service server and registry client to push and pull image from other registry service by ddrd. Local registry service supplies image management stuff things to interact with docker client. And we need develop ddr backend driver to handle all necessary request such as getting manifest or blobs.If the driver can't find any message local, it should ask ddrd to find message from remote node.So the ddrd has only one responsibility for finding the message in the P2P network but not for storage.

ddr

Plan

  1. September, core technical problems finish
  2. October, ddrd alpha release
  3. November, ddr driver alpha release
  4. December, bug fix and beta release

License