I'm currently researching ways to provide stateful storage to docker containers in Docker Swarm. I've come across the vsphere storage for docker volume plugin (https://storagehub.vmware.com/t/vsphere-docker-volume-service/installation-6/) (https://github.com/vmware-archive/vsphere-storage-for-docker) which looks ideal for my purposes as I'm running my hosts as VMs in vSphere.
The installation process seems to involve the command docker plugin install --grant-all-permissions --alias vsphere vmware/docker-volume-vsphere:latest
on each docker host. From what I can tell, this is starting a new container on the host which grants the plugin to the host.
However, if there is a need to run a container on all the hosts in the swarm, is there a way to run the plugin container as a Global Service (like a daemonset in K8s) rather than having to install the plugin on each host?
Certainly it would be advantageous to have Docker Swarm automatically run the container on all hosts in the event of new hosts being added. On the other hand, I could see a catch-22 issue where a plugin would be needed for a Global Service to even exist (such as with a network plugin).
Without testing this, I would instinctively say that it's probably a good idea to manually deploy this to each host, as you might otherwise run into issues if you for example need to start from cold incase of a power outage or something similar, as you yourself correctly thought!