I am looking to scale a docker application used to perform periodic performance tests on equipment at several remote locations. This application requires running the same performance tests- using the same underlying images- on each of the remote worker nodes with a configuration specific to each worker node.
Consider this example, where I have three servers...
worker.denver.example.com
worker.chicago.example.com
worker.newyork.example.com
...and I want to run my containers fizbuz-tester
and foobar-performance
on all three of the worker nodes. How would I do the following:
- Run
fizbuz-tester
once every hour onworker.denver
andworker.chicago
but every six hours onworker.newyork
. - Set an environment variable in
foobar-performance
asMY_JAM=ABBA
onworker.chicago
,MY_JAM=IRONMAIDEN
onworker.denver
, andMY_JAM=BEATLES
onworker.newyork
.
The underlying Docker image that runs the container is the same, but the runtime settings are different (and will be adjusted periodically). Currently my process is to consult my documentation and run the appropriate docker run
command on each worker. If I want to change one of the configuration options for a container it again involves connecting to the worker. The scalibility issues should be apparent.
How can I manage this application as it scales from 3 to 5, to 10, to 20 worker nodes?
The Docker orchestration tools I've found seem to be based around "do the same thing in the same way in lots of places", whereas for my application I need to "do the same thing in different ways in lots of places"
The go-to for remote container orchestration- Docker Swarm- does not serve my use case. Everything I've read about Swarm indicates that it abstracts the management of the actual Docker worker hosts away, which is exactly not what I need.
Is there a tool that lets me remotely manage multiple docker worker nodes from a central server, while still giving me control over each worker individually and not just as a part of a resource pool?
I'm hoping that two years on from this question there might be an answer available