The purpose of this project is to provide the docker masses with an authenticated docker index for their own docker registry that has real repository access controls instead of just using htaccess on a reverse proxy.
While I don't have any problems using this software, I cannot say that it is 100% without bug or will work with anyone, I know some people have downloaded the project, but I haven received zero feedback as to functionality.
Known to work with registry version 0.7.x and 0.8.x
This is a functioning Docker Index that can be run independent of the Docker Registry software.
- Access Controls Per Namespace or Repo
- Webhooks (For New Images and All Image Pushes)
- Can be disabled
- History is kept, but can be disabled
- Internal API to Facilitate Management of the Index
- Command Line Tool to simplify the management of the Index
- Account Registration by just doing a docker login (can be disabled)
- New accounts can also be disabled by default
Check out the Installation Document
Check out the Configuration Document
API Docs Coming Soon
Management / CLI Tool
To facilitate working with the
docker-index more easily, there is a command line tool available. https://github.com/ekristen/docker-index-cli
All management is done via the new command line tool over at https://github.com/ekristen/docker-index-cli
hi, I used redis + docker-index + docker-registry(0.9.0) + docker-index-nginx(front end)
After all containers created and started up successfully:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a48c7e0206e4 registry:0.9.0 "docker-registry" 2 weeks ago Up 2 weeks 0.0.0.0:5000->5000/tcp docker-registry
9aa812e31a16 docker-index-nginx:latest "bash /run.sh" 2 weeks ago Up 2 weeks 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx
f8a5d9ef6de6 ekristen/docker-index:1.4.0-rc1 "node app.js" 2 weeks ago Up 2 weeks 0.0.0.0:5100->5100/tcp docker-index
b4641c0d94cc dockerfile/redis:latest "redis-server /etc/r 2 weeks ago Up 2 weeks 6379/tcp index_redis
I tried to login it:
docker login http://xxxx.xxx.com
FATA Error response from daemon:
actually , I did not know the initial admin password. I input some charactors randomly, obviously it was failed.
then , I saw this as below in readme.md of docker-index:
Initial Admin Account
When you start the docker index application for the first time, a first run text will be displayed to standard out. This text will contain the randomly set password for the default admin account.
but , when I created and started up the docker-index container, I did not find the "text" except the container ID on std out:
docker run -d --name="docker-index" -p 5100:5100 -e REGISTRIES=xxxx.xxxx.com --link index_redis:redis ekristen/docker-index:1.4.0-rc1
Anyone ever encountered this issue ? or who can help me ?
thanks a lot.
Hello. I am trying this,
but I couldnt make it work yet :(
I have many comments/questions for you:
1 - How shall I do to make code go through http value in the if, for example: /usr/lib/node_modules/docker-index-cli/lib/commands/list_users.js
var protocol = (options.http == true) ? 'http' : 'https';
I had to hardcode a workaroud to make it work with http adding:
protocol = 'http';
2 - Comment: getUser throws error when check
if (typeof(dockercfg[index]) == “undefined” || typeof(dockercfg[index].auth) == “undefined”)
since dockercfg is undefined.
3 - Question: does it work without a nginx layer, only with http?
I get error when I try to push to my registry and I login only with http “docker login dockerr:5100”
HTTP code 401, Docker will not send auth headers over HTTP.
4 - Question: if I use nginx as front-end of index and registry,
I get the error about certificate:
Invalid Registry endpoint: Get https://dockerr/v1/_ping: x509: certificate is valid for *.private.io, not dockerr
How should I do to make it work with nginx layer?
Following is the fig file I use to start containers:
- DEBUG=true - STANDALONE=false - LOGLEVEL=debug - DISABLE_TOKEN_AUTH=false - SETTINGS_FLAVOR=local
- NODE_TLS_REJECT_UNAUTHORIZED=0 - REGISTRIES=dockerr:5000 - DISABLE_NEW_ACCOUNTS=true - NODE_ENV=docker - LOG_LEVEL=debug - REGISTRY_PROTOCOL=http
- INDEX_HOSTNAME=dockerr - REGISTRY_HOSTNAME=dockerr
- 80:80 - 443:443
- registry:registry - index:index
Thanks a lot for the help.