Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/containersolutions/imagewolf

Fast Distribution of Docker Images on Clusters
https://github.com/containersolutions/imagewolf

docker docker-image docker-registry swarm

Last synced: about 6 hours ago
JSON representation

Fast Distribution of Docker Images on Clusters

Awesome Lists containing this project

README

        

ImageWolf - Fast Distribution of Docker Images on Clusters
==========================================================

ImageWolf is a PoC that provides a blazingly fast way to get Docker images
loaded onto your cluster, allowing updates to be pushed out quicker.

ImageWolf works alongside existing registries such as the Docker Hub, Quay.io
as well as self-hosted registries.

The PoC for ImageWolf uses the BitTorrent protocol spread images around the
cluster as they are pushed.

## Video

### Docker Swarm

[![asciicast](https://asciinema.org/a/DowEjf7Inqhtu4ZQsvZfA2b0j.png)](https://asciinema.org/a/DowEjf7Inqhtu4ZQsvZfA2b0j)

### Kubernetes

[![asciicast](https://asciinema.org/a/01rQtDxr67y4Gtu85KpBJ9cz2.png)](https://asciinema.org/a/01rQtDxr67y4Gtu85KpBJ9cz2)

## Getting Started

ImageWolf is currently alpha software and intended as a PoC - please don't run it in
production!

### Docker Swarm Mode

To start ImageWolf, run the following on your Swarm master:

```
docker network create -d overlay --attachable wolf
docker service create --network wolf --name imagewolf --mode global \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
containersol/imagewolf
```

The ImageWolf service is now running on all nodes in our cluster.

The next step is to link ImageWolf with a registry. Whenever an image is pushed to
the registry, ImageWolf will immediately pull it and distribute across all the
nodes. To set up a private registry linked to ImageWolf:

```
# First find the id of the ImageWolf task running on this node
# This should work, but is a bit of a hack
TASK=$(docker ps -f name="imagewolf." --format {{.ID}})

# Configuration for the notification endpoint

export REGISTRY_NOTIFICATIONS_ENDPOINTS=$(cat <