使用docker群执行奇异容器而不是“服务”

我非常喜欢使用Docker机器集群来执行Docker服务的概念。 我也喜欢奇异docker集装箱不具备的附加function(如docker秘密)。

但我真的不需要长期的服务。 我的用例是简单地执行一个bash脚本来使用docker swarm来接收任意数量的有限命令,并且在同一个docker镜像上执行每个docker容器,同时使用docker swarm秘密加载的秘密。

我可以这样做吗?
我不想让这个容器“长时间运行”。 我希望它运行,然后在加载到容器中的bash脚本完成时,使用输出退出。

您可以将来自alex ellis的 “ Docker Swarm上的一次性容器 ”中提出的想法应用到这里。

你仍然需要创build一个服务, 有正确的重新启动策略。
例如,对于一个快速的Web服务器:

docker service create --restart-policy=none --name crawler1 -e url=http://blog.alexellis.io -d crawl_site alexellis2/href-counter 

所以通过设置0的重启策略,容器将作为(任务)在群中的某处进行调度。 容器将执行,然后准备就绪时它将退出。

如果容器由于某个有效的原因而无法启动,那么重启策略将意味着应用程序代码从不执行。 如果我们可以立即返回退出代码(如果非零)以及伴随的日志输出,那也是理想的。

最后一部分,使用他的工具: alexellis / jaas

运行你的第一个一次性容器:

 # jaas -rm -image alexellis2/cows:latest 

-rm标志删除了用于运行容器的Swarm服务。

您的容器退出代码也将可用,您可以检查它与echo $?