Container Registry Synchronization made easy and fast

Related tags

DevOps Tools booster
Overview

🚀 booster

Makes synchronization of container images between registries faster.

build status

Requirements

  • Two or more container registries to synchronize
  • Access to their backing storage directory (for now)

Demo

Set up a demo environment with two local Registry containers, each with its booster:

# Start a "primary" registry backed by a local directory
docker run -d \
  -p 5001:5000 \
  -v `pwd`/primary:/var/lib/registry \
  registry:2

# Start a companion booster container for the primary
PRIMARY_BOOSTER_ID=$( \
docker run -d \
  -p 5002:5000 \
  -v `pwd`/primary:/var/lib/registry \
  ghcr.io/moio/booster:latest \
) 


# Start a "replica" registry backed by another local directory
docker run -d \
  -p 5003:5000 \
  -v `pwd`/replica:/var/lib/registry \
  registry:2

# Start a companion booster container for the replica
# Link it to the primary booster
docker run -d \
  -p 5004:5000 \
  -v `pwd`/replica:/var/lib/registry \
  --link $PRIMARY_BOOSTER_ID:primary-booster \
  ghcr.io/moio/booster:latest --primary=http://primary-booster:5000

Load up the primary Registry with an image:

docker pull ubuntu:xenial-20210429
docker image tag ubuntu:xenial-20210429 localhost:5001/ubuntu:xenial-20210429
docker image push localhost:5001/ubuntu:xenial-20210429

Synchronize the replica to the primary's contents via:

curl http://localhost:5004/sync

Then push another image and synchronize again:

docker pull ubuntu:xenial-20210611
docker image tag ubuntu:xenial-20210611 localhost:5001/ubuntu:xenial-20210611
docker image push localhost:5001/ubuntu:xenial-20210611

curl http://localhost:5004/sync

Hacking

Building of release binaries, packages and Docker images is done via goreleaser.

For a snapshot build use:

goreleaser release --skip-publish --snapshot --rm-dist
Issues
  • A round of small fixes

    A round of small fixes

    Small round of fixes

    • Make the code more idiomatic
    • Handle all errors, some of them are slightly cosmetic, others are more "serious" like the ones raised by the file walker
    opened by flavio 0
  • Access registry data via API

    Access registry data via API

    Currently, all access to registry data happens exclusively via the filesystem, which makes it impossible to work with non-local registries.

    It would be nice to access registries via their API exclusively.

    opened by moio 1
  • Make diff preparation API asynchronous

    Make diff preparation API asynchronous

    At the moment the /prepare_diff API endpoint is blocking during the entire duration of the patch preparation.

    It would be nice if /prepare_diff returned a "job id" and continued to work in the background.

    opened by moio 0
Releases(v0.5)
Owner
Silvio Moioli
Remote worker at @SUSE, open source for a living!
Silvio Moioli
registry-tools: Prints image digest from a registry

registry-tools: Prints image digest from a registry

Rashed K 1 Dec 23, 2021
Kubernetes Container Registry

k8scr A kubectl plugin for pushing OCI images through the Kubernetes API server. Quickstart Build kubectl-k8scr make build Move to location in PATH s

Daniel Mangum 110 Mar 25, 2022
Kubernetes controller for backing up public container images to our own registry repository

image-clone-controller Kubernetes controller which watches applications (Deployment and DaemonSet) and "caches" the images (public container images) b

Sahadat Hossain 6 Jan 17, 2022
Returns which registry from the container image name

Returns which registry from the container image name

Nozomu Ohki 0 Jan 23, 2022
A Grafana backend plugin for automatic synchronization of dashboard between multiple Grafana instances.

Grafana Dashboard Synchronization Backend Plugin A Grafana backend plugin for automatic synchronization of dashboard between multiple Grafana instance

Novatec Consulting GmbH 6 Apr 8, 2022
Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

The Moby Project Moby is an open-source project created by Docker to enable and accelerate software containerization. It provides a "Lego set" of tool

Moby 63k May 11, 2022
Boxygen is a container as code framework that allows you to build container images from code

Boxygen is a container as code framework that allows you to build container images from code, allowing integration of container image builds into other tooling such as servers or CLI tooling.

nitric 5 Dec 13, 2021
Amazon ECS Container Agent: a component of Amazon Elastic Container Service

Amazon ECS Container Agent The Amazon ECS Container Agent is a component of Amazon Elastic Container Service (Amazon ECS) and is responsible for manag

null 0 Dec 28, 2021
The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your container orchestrator

fortress-csi The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your co

Fortress 0 Jan 23, 2022
k8s-image-swapper Mirror images into your own registry and swap image references automatically.

k8s-image-swapper Mirror images into your own registry and swap image references automatically. k8s-image-swapper is a mutating webhook for Kubernetes

Enrico Stahn 300 May 1, 2022
Solana Token Registry - a package that allows application to query for list of tokens

Please note: This repository is being rebuilt to accept the new volume of token additions and modifications. PR merges will be delayed. @solana/spl-to

Square and Compass 0 Jan 16, 2022
A tool to check whether docker images exist in the remote registry.

Check Docker Image A tool to check whether docker images exist in the remote registry. Build project: go build -o check-image . Example usage: REGISTR

Hao-Ming, Hsu 1 Jan 20, 2022
Common Image Registry for Testcontainers-Go

Testcontainers-Go Common Image Registry Common Image Registry for Testcontainers-Go Prerequisites Go >= 1.16 Install go get github.com/nhatthm/testcon

Nhat 1 Feb 3, 2022
Service registry/discovery implementation in Go.

go-service-registry Availabe endpoints : GET http://localhost:3000/ --> Dashboard GET http://localhost:3000/services/[serviceName] --> Get available

null 1 Feb 11, 2022
FaaSNet: Scalable and Fast Provisioning of Custom Serverless Container Runtimes at Alibaba Cloud Function Compute (USENIX ATC'21)

FaaSNet FaaSNet is the first system that provides an end-to-end, integrated solution for FaaS-optimized container runtime provisioning. FaaSNet uses l

LeapLab @ CS_GMU 29 Apr 19, 2022
Book-API was made using Golang and PostgreSQL with technique CRUD with mux and pq

Book-API CRUD with PostgreSQL Table of contents ?? General info Technologies Blog Setup General info BAPI or Book-API is a Golang REST API made to sho

Hafizh 1 Feb 18, 2022
Cheiron is a Kubernetes Operator made with OperatorSDK for reconciling service account and attaching imagePullSecrets to service accounts automatically

anny-co/cheiron NOTE: Cheiron is currently in very early stages of development and and far from anything usable. Feel free to contribute if you want t

anny 2 Sep 13, 2021
Vilicus is an open source tool that orchestrates security scans of container images(docker/oci) and centralizes all results into a database for further analysis and metrics.

Vilicus Table of Contents Overview How does it work? Architecture Development Run deployment manually Usage Example of analysis Overview Vilicus is an

Ederson Brilhante 76 Mar 22, 2022