Web gateway for OCI artifacts


Containerbay

Web gateway for OCI artifacts

license go report card


Container images gateway browser and indexer
Website static server - Reverse Container image browser

Containerbay allows to serve OCI container artifacts as static websites and browse them from curl or your browser. Works also with MagicDNS(tm).

📓 Example

curl https://containerbay.io/ghcr.io/containerbay/containerbay.io:latest/

Some notable examples that you can just browse right away:

If there is no index page, it will fallback to list all the present files, so it can be used to browse also already existing container images content

💻 Usage

Containerbay can be used to explore container images with curl, but can also be used to bind static domain, or run standalone servers that bind to a single image reference

API

Point your browser or either curl to access the container's content in this form host/registry/org/image_name:tag/, the host should be pointed to a containerbay instance ( like containerbay.io ):

curl https://containerbay.io/docker.io/opensuse/leap/etc/os-release
curl https://containerbay.io/docker.io/opensuse/leap@sha256:b603e69d71c9d9b3ec1fcd89d2db2f3c82d757e8a724a8602d6514dc4c77b1cb/

MagicDNS(tm)

When Containerbay is running, it accepts container images from subdomains in the following format registry.org.image_name.tag.magicdns.io

For example, by using containerbay.io

curl http://docker.io.library.alpine.latest.containerbay.io/etc/os-release

will return /etc/os-release from alpine:latest.

Bind to a custom domain

Containerbay can associate a custom domain to a container image. In this way you can have images containing static HTML files and use it to serve a subdomain or a top level dns. See as an example repository.

Point your DNS to the containerbay instance via A or CNAME and add a corresponding TXT record.

In the TXT record, write the image you want to serve:

containerbay=library/alpine:latest

Serve a static website

Containerbay can be used to deploy static website.

There is available a pack command which is a helper in order to create tar archives from files that can be loaded from docker in order to be pushed over a registry, for instance, if you have a folder with a index.html:

# Create output.tar, and include api/public/index.html. The container image will be named quay.io/mudler/containerbay:website
containerbay pack --destination output.tar quay.io/mudler/containerbay:website api/public/index.html
# Load the image to the docker daemon
docker load -i output.tar
# Push the container image
docker push quay.io/mudler/containerbay:website

containerbay pack accepts a destination output with the --destination flag, first argument is the container image

Alternatively you can also just use docker, or podman or your favorite container builder, check the website folder for an example.

🏃 Deploy

Containerbay is currently a service deployed at containerbay.io.

You can although choose to deploy containerbay locally, using Docker or Kubernetes.

Docker

You can run containerbay with:

docker run -p 80:8080 \
           -e CONTAINERBAY_LISTENADDR=:8080 \
           -e CONTAINERBAY_MAGICDNS= \
           -e CONTAINERBAY_MAXSIZE=100MB \
           -e CONTAINERBAY_CLEANUPINTERVAL=1h \
           -ti --restart=always --name containerbay quay.io/mudler/containerbay run

The API endpoint will be accessible at localhost:80

Kubernetes

There is a sample deployment file in kube. Edit the ingress definition to fit your needs, there is also a traefik example configuration file for a wildcard DNS setup (magicDNS*)

Locally

As containerbay is a static binary, you can just download the binary from the releases and run it locally.

Containerbay from the CLI can run as a proxy for multiple images, or run standalone to point only to a specific image/tag.

There is also available a pack subcommand as utility to create docker-loadable images from folders and directories.

Run standalone mode

Containerbay can also be used to serve a single container image reference only, for instance:

containerbay standalone <image/reference:tag>

Will start the API server serving the image on the default port (8080).

Caveats

DockerHub applies pull rate limits to manifest fetching, containerbay could hit those limit depending on the service usage. Other container registries like e.g. quay.io don't have such limitations.

Support containerbay.io

Currently containerbay is hosted merely on my own expenses, if you rely on this service, consider to donate or sponsor hosting for this service!

Author

Ettore Di Giacinto

Credits

Icons made by Freepik from www.flaticon.com

License

GPL-3

Owner
Similar Resources

oci-ccm custom build for both arm64 and amd64

OCI Cloud Controller Manager (CCM) oci-cloud-controller-manager is a Kubernetes Cloud Controller Manager implementation (or out-of-tree cloud-provider

Jan 18, 2022

Kong Api Gateway Plugins for golang

Prerequisites: Windows Docker. Build Command: docker build -t kong-plugins . Run Command: docker run -ti --rm --name kong-plugins -e "KONG_DATABASE=of

Aug 3, 2022

This is a shell gateway-api controller

gateway-api-controller This is an initial implementation of the various controllers required in order to manage Gateway API network deployments within

May 4, 2023

⚔️ Web Hacker's Weapons / A collection of cool tools used by Web hackers. Happy hacking , Happy bug-hunting

⚔️ Web Hacker's Weapons / A collection of cool tools used by Web hackers. Happy hacking , Happy bug-hunting

A collection of cool tools used by Web hackers. Happy hacking , Happy bug-hunting Family project Table of Contents WHW-Tools Weapons Awesome Bookmarkl

Jan 5, 2023

Help developer to sync between local file and remote apollo portal web since portal web is so messy to use

apollo-synchronizer Help developer to sync between local file and remote apollo portal web since portal web is so messy to use Features download names

Oct 27, 2022

Amazon Web Services (AWS) providerAmazon Web Services (AWS) provider

Amazon Web Services (AWS) provider The Amazon Web Services (AWS) resource provider for Pulumi lets you use AWS resources in your cloud programs. To us

Nov 10, 2021

Witty - An unsafe web server to export shell to web

Witty - An unsafe web server to export shell to web

WiTTY: Web-based interactive TTY This program allows you to use terminal in the

Dec 30, 2022

Web-based gdb front-end application

Introduction Tired of using the plain gdb command-line interface to debug your Go/C/C++ applications? Godbg is a graphical web-based front end for gdb

Nov 6, 2022

Flexible HTTP command line stress tester for websites and web services

Flexible HTTP command line stress tester for websites and web services

Pewpew Pewpew is a flexible command line HTTP stress tester. Unlike other stress testers, it can hit multiple targets with multiple configurations, si

Dec 27, 2022
The OCI Service Operator for Kubernetes (OSOK) makes it easy to connect and manage OCI services from a cloud native application running in a Kubernetes environment.

OCI Service Operator for Kubernetes Introduction The OCI Service Operator for Kubernetes (OSOK) makes it easy to create, manage, and connect to Oracle

Sep 27, 2022
An Oracle Cloud (OCI) Pulumi resource package, providing multi-language access to OCI

Oracle Cloud Infrastructure Resource Provider The Oracle Cloud Infrastructure (OCI) Resource Provider lets you manage OCI resources. Installing This p

Dec 2, 2022
Copy files and artifacts via SSH using a binary, docker or Drone CI.

drone-scp Copy files and artifacts via SSH using a binary, docker or Drone CI. Feature Support routines. Support wildcard pattern on source list. Supp

Dec 6, 2022
BuildKit - A toolkit for converting source code to build artifacts in an efficient, expressive and repeatable manner
BuildKit - A toolkit for converting source code to build artifacts in an efficient, expressive and repeatable manner

BuildKit BuildKit is a toolkit for converting source code to build artifacts in an efficient, expressive and repeatable manner. Key features: Automati

Feb 19, 2022
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 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

Dec 6, 2022
OCI Image Encryption Package

imgcrypt image encryption library and command line tool Project imgcrypt is a non-core subproject of containerd. The imgcrypt library provides API exe

Jan 5, 2023
OCI transport plugin for apt-get (i.e., apt-get over ghcr.io)

apt-transport-oci: OCI transport plugin for apt-get (i.e., apt-get over ghcr.io) apt-transport-oci is an apt-get plugin to support distributing *.deb

Nov 1, 2022
Simple, rootless, "FROM scratch" OCI image builder

zeroimage zeroimage some-program is like building the following Docker image: FROM scratch COPY some-program /some-program ENTRYPOINT ["/some-program"

Jun 26, 2022
OCI drive, available from home

OCI Drive ... use your storage with Oracle Object Store Quick Start Make sure you have the Object Storage, bucket and you know the compartment id wher

Nov 10, 2021
Executes an OCI image using firecracker.

oci-image-executor Executes an OCI image using Firecracker. Logs from the executed process (both stdout and stderr) are sent to stdout. Logs from the

Dec 28, 2022