You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
Limitations
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.
TODO
Support http, udp proxying
Support multiple ports
Make ETCD prefix configurable
Support other backends (consul, zookeeper, redis, etc.)