Is dnsdock the answer?
Third time lucky on my quest to solve Docker container linking issues.
I've struggled with Docker, and getting it to play nicely with our workflow, principally around the issue of container IP resolution at runtime:
the linking of containers only works if it is done in the correct order. If you decide to restart / rebuild your database container (for instance, to reset the data to a known state), and the assigned IP changes, your downstream App container will no longer link to the correct container.
I thought that Skydock would be the solution - as a DNS server that would handle the resolution of deterministic container names to dynamic IPs (assigned on container startup). Turned out to be a much more complete, and therefore complex, product than I had hoped, and it added more problems than it solved.
I think the underlying issue is that docker, containers, and I are fundamentally solving different problems. The core docker use case is how to run and manage containers, at scale, in a production environment. My use case is getting to a simple, repeatable, local developer environment that includes common builds of the core components (redis, memcache, postgres, django, elasticsearch). The kicker is that precisely because this is a developer's environment the containers need to be updated, torn down, restarted, repeatedly, by design. This is almost the inverse of a standard containerised deployment.
Anyhoo, the latest DNS solution comes from Tõnis Tiigi and is called dnsdock. The intro to dnsdock includes this:
Simplified version of crosbymichael/skydock.[...] Does not use any distributed storage and is meant to be used only inside single host.
This sounds much closer to my own situation. I won't set my own expectations too high given the problems I've already had, but I'm (secretly) hopeful...
Making Freelance Work