Как найти docker swarm хост на котором запущен контейнер по id или внутреннему hostname

Иногда надо узнать на каком именно хосте docker swarm запущен контейнер, зная только его внутренний hostname, например если мы его знаем из системы мониторинга, что-то произошло, а меры надо принимать на хосте, например освободить места на диске.

Я пытался найти способ узнать это по-простому, но так и не нашёл. Ну и пришёл к двум способам это выяснить и скомбинировал всё в одном скрипте:

  1. втупую делается “ssh docker ps grep” на хостах docker swarm. Работает быстро, по-меньшей мере с тремя нодами, но требует, соответственно, доступ по ssh на все хосты в сварме, под юзером, имеющим доступ к работе с docker
  2. метод, использующий cli docker swarm на машине-менеджере swarm, но требует три слоя запуска docker cli и занимает прилично времени

Касательно скорости – на трёх нодах первый метод отрабатывает меньше секунды, тогда как второй выполняется около 25 секунд.

Скрипт имеет неплохую инструкцию по эксплуатации и возможности по конфигурации через переменные окружения.