docker-registry-server
Docker registry implemented in Node.
npm install -g docker-registry-server
You can also pull the docker image
docker pull mafintosh/docker-registry-server
Usage
To start it run
docker-registry-server
Currently data will be stored in ./layers
and ./db
.
For more info run docker-registry-server --help
Authentication
Per default there is no authentication (meaning everyone can push/pull images).
You can use the --user
command line option to limit registry access.
docker-registry-server --user mafintosh:secret --user another:hunter2
Hooks
Similar to a git repository you can specify hooks that are executed when certain events happen. Currently the following hooks are supported
tag (id, tag)
Triggered when an image is tagged (happens when you push a tagged image)image (id)
Triggered when an image metadata is uploadedlayer (id)
Triggered when an image layer is uploadedverify (id)
Triggered when an image layer+metadata has been verifiedindex (id)
Triggered when an image file system data has been indexed
The tag
hook is especially useful as it allows you to set up a push->deploy
flow.
To add a hook specify it as a command line argument prefixed with --on-{name} {bash-script}
docker-registry-server --on-tag "echo image \$1 was tagged with \$2 - please deploy"
Or add them in a ./hooks/{name}
file
APIs
The registry should support all of the APIs specified in the docker docs. In addition, the following APIs are available
GET /v1/images/{id}/tree/{directory}
Returns a JSON array containing the files/folders in {directory}
in the image {id}
.
Fx if you have an image, 4a21b50675ba611ab0e9236c4f9430348d932ea3bf6e9b2af86b47eca9088320
and you want to list
the files in /root
do
curl localhost:8000/v1/images/4a21b50675ba611ab0e9236c4f9430348d932ea3bf6e9b2af86b47eca9088320/tree/root
GET /v1/images/{id}/blobs/{filename}
Get the file content of {filename}
in the image {id}
.
Fx if you have the same image as above and want to read /root/package.json
do
curl localhost:8000/v1/images/4a21b50675ba611ab0e9236c4f9430348d932ea3bf6e9b2af86b47eca9088320/tree/root/package.json
GET /v1/events
Get a newline delimited JSON stream on events from the registry. Use type={name}
to limit the events you get.
curl localhost:8000/v1/events?type=tag
License
MIT