Certain projects may demand the use of private registries. This page lists, and comments on some of the different possible solutions of hosting your own private Docker Registry.
Docker Registry is Docker's own approach to providing users with private registry capabilities. It runs inside a docker container, and by default, your registry data is persisted as a docker volume on the host filesystem. Cloud storage solutions such as AWS S3 and Azure may be used as an alternative storage medium.
Docker registry requires certificates and a proper TLS setup to function for push/pull for clients. It can either be set up directly when running the Docker registry, or through an nginx proxy. If the registry has not set up TLS properly, or with self-signed certificates, the docker daemon must be run with the --engine-insecure-registry hostname:nginx_port. This gets very tiresome if several developers/environments should use the registry.
Through the use of an nginx proxy, additional authentication possibilities open up, as well as allowing SSL termination in the proxy.