Home

Awesome

The Rescoyl Docker registry

Rescoyl is a Docker registry. It is tested against the official docker-registry project using Rescoyl Checks. It is currently in development.

Building the image

To create a local Docker image with Rescoyl ready to run, simply run:

> make

Building the image requires images.reesd.com/reesd/stack, an image containing GHC and some dependencies. For that reason, the simplest way to run the image on any machine without registry is to dump the resulting image as a tarball. The Makefile can creates such a tarball:

> make rescoyl.tar.xz

On another machine, loading the tarball within Docker is self-sufficient:

> docker load -i rescoyl.tar.xz

In both cases, you will end up with an image called noteed/rescoyl.

Note: that images.reesd.com/reesd/stack is not yet public. Until then, simply cabal install and then optionally build the Docker image (see in the Makefile for an example).

Running

To run the image locally, e.g. for testing, there is no need to forward ports:

> docker run -d noteed/rescoyl

Note: you need to make sure that registry.local (or whatever you want to call it to test it) resolves to your running Docker container, possibly by editing your /etc/hosts file.

Otherwise:

> docker run -d -p 80:80 noteed/rescoyl

Note: normally the storage area of the container should be mapped on the host file system, for instance:

> mkdir /IMAGES
> docker run -d -p 80:80 -v /IMAGES:/store noteed/rescoyl

Testing

Prepare a dind-rescoyl (container) volume

The tests run in their own container and they will download an ubuntu:12.04 image. To avoid re-downloading that image repeatedly, you can do it once and keep around the resulting volume. The test script will use the volume from a container named dind-rescoyl.

> docker run --name dind-rescoyl \
  -t -i --privileged images.reesd.com/hypered/dind
root@aaaaaaaaaaaa:/# docker pull ubuntu:12.04
^D

After you can check that running a container with --volumes-from dind-rescoyl will have the ubuntu:12.04 image already present.

rescoyl-checks

The tests require a copy of the rescoyl-checks executable in the current directory.

Run the tests

The tests are run as follow:

> ./integration rescoyl # to run against Rescoyl

or

> ./integration registry # to run against the official registry