I have been researching Docker; orchestration, composition, or scheduling; depending on which sources you’ve been following. And as I wander around this maze I have looked at many different approaches to the problem. Everything from Puppet, Chef, Ansible, SaltStack, to Panamax, Kubernetes, Fleet, Mesophere, Deis, Flynn, Fig, shipyard; ambassadord, registrator … and more. I even departed from these suggestions to look at Citadel which is an API tooklit for interacting with Docker directly.The Citadel Toolkit give you the necessary tools and frameworks to implement your “configuration as code”. It is the foundation which Shipyard is implemented; while Shipyard uses Citadel as part of the GUI there is no reason why the “application” could not be a static configuration in a “solo” fashion. Citadel is robust enough that you could deploy ambassadors or sidekicks while deploying the target container. Citadel shines in that it provides an API metaphor for deploying containers in clusters as well as allowing user defined “scheduling” functions.Where Citadel fails is that it implements some of the features that Fleet does but is incomplete. Citadel, by itself, cannot cron, auto-restart with restarting forever, and the schedulers still need to be implemented.If you need basic access for deploying containers or maybe taking an image of the running containers then this is a nice tool. But launching or deploying is another matter. Fleet is still the hands down winner even though it’s “configuration as configuration”.[UPDATE] I think that fleet might be a better input mechanism and citadel might be a better output, however, it may not be completely clear where they crossover.