Skip to content

jwilder/docker-register

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

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

Usage

To run it:

$ docker run -d -e HOST_IP=1.2.3.4 -e ETCD_HOST=1.2.3.4:4001 -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.

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.)

About

Service registration for docker containers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published