Roll you own Docker Registry with nginx (In Docker)

When yor private numbers of docker images grow is time to setup you own private repo.
Do have you own docker repo you need 1. the docker registry 2. nginx to handel users 3. tls so that all conenctions are encrypted.

So here is what yu do to have you own docker repo running.

 

 

  1. Install docker-compsoe and setup the followin docker-compose file
storage: 
image: busybox 
volumes: 
- /backup/docker/registry:/var/lib/docker/registry 
cache: 
image: redis 
registry: 
image: registry 
ports: 
- 127.0.0.1:5000:5000 
links: 
- cache 
- storage 
volumes_from: 
- storage
environment: 
STANDALONE: true
SETTINGS_FLAVOR: local 
STORAGE_PATH: /var/lib/docker/registry 
SEARCH_BACKEND: sqlalchemy 
CACHE_REDIS_HOST: cache 
CACHE_REDIS_PORT: 6379 
CACHE_LRU_REDIS_HOST: cache 
CACHE_LRU_REDIS_PORT: 6379
webb:
#image: mattiashem/nginx-registry
build: registry-front/
ports:
- 443:443
- 80:80
links:
- registry

 

create the folder registry-front in that folder we are going to add our users and our certs for the tls.
So create a Dockerfile and add the following

 

#Base docker file for lifeandshell.com
FROM mattiashem/nginx-registry
MAINTAINER "Mattias Hemmingsson" <matte.hemmingsson@gmail.com>
EXPOSE 80
EXPOSE 443
ADD nginx.htpasswd /etc/nginx/nginx.htpasswd
ADD cert.pem /etc/nginx/ssl/nginx.crt
ADD privkey.pem /etc/nginx/ssl/nginx.key
ADD fullchain.pem /etc/nginx/ssl/fullchain.pem
CMD nginx -g "daemon off;"

The file I get from using letsencrypt that are free but you can  get from any source. Chnage so that the source files are mathcing with you certs.

 

Now time for setting up some users create the file add_user.sh and add the followin content to it

 

docker run --rm --entrypoint htpasswd registry:2 -bn user1 password > nginx.htpasswd
docker run --rm --entrypoint htpasswd registry:2 -bn user2 password >> nginx.htpasswd
docker run --rm --entrypoint htpasswd registry:2 -bn user3 password >> nginx.htpasswd
docker run --rm --entrypoint htpasswd registry:2 -bn user4 password >> nginx.htpasswd

 

make the script x and run intt In the registry-front folder

chmod +x add_user.sh
./add_user.sh

 

Now we are ready to start our registry do the the base filer with the docker-compose.yml and run

 

 

docker-compose build
docker-compose up

 

And now when everthing is wokring run

 

 

docker-compose start

 

 

And now you docker-registry should be up and running

 

 

 

Leave a Reply

%d bloggers like this: