Public | Automated Build

Last pushed: 7 months ago
Short Description
Short description is empty for this repo.
Full Description

docker-register sets up a container running docker-gen. docker-gen dynamically generate a
python script when containers are started and stopped. This generated script registers the running
containers host IP and port in etcd with a TTL. It works in tandem with docker-discover which
generates haproxy routes on the host to forward requests to registered containers.

Together, they implement service discovery for docker containers with a similar architecture
to SmartStack. docker-register is analagous to nerve in the SmartStack system.

See also Docker Service Discovery Using Etcd and Haproxy


To run it:

$ docker run -d -e HOST_IP= -e ETCD_HOST= -v /var/run/docker.sock:/var/run/docker.sock -t jwilder/docker-register

Then start any containers you want to be discoverable and publish their exposed port to the host.

$ docker run -d -P -t ...

If you run the container on multiple hosts, they will be grouped together automatically.


There are a few simplications that were made:

  • Containers can only expose one port - This is a simplification but if the container EXPOSEs
    multiple ports, it won't be registered in etcd.
  • Exposed ports must be unique to the service - Each container must expose it's service on a unique
    port. For example, if you have two different backend web services and they both expose their service
    over port 80, then one will need to use a port 80 and the other a different port.


  • Support http, udp proxying
  • Support multiple ports
  • Make ETCD prefix configurable
  • Support other backends (consul, zookeeper, redis, etc.)
Docker Pull Command
Source Repository