【问题标题】:Using docker swarm to execute singular containers rather than "services"使用 docker swarm 执行单个容器而不是“服务”
【发布时间】:2018-03-01 00:17:47
【问题描述】:

我真的很喜欢拥有一组 docker 机器来执行 docker 服务的概念。我也喜欢单个 docker 容器不具备的附加功能(例如 docker secret)。

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

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

【问题讨论】:

标签: docker containers dockerfile docker-swarm


【解决方案1】:

您可以应用 alex ellis 的“One-shot containers on Docker Swarm”中提出的想法。

您仍然需要创建服务,使用正确的重启策略。
例如,对于快速 Web 服务器:

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

--restart-condition,不是--restart-policy,作为commentedethergeist

因此,通过将重启条件设置为 0,容器将作为(任务)调度到 swarm 中的某个位置。容器将执行,然后在准备就绪时退出。

如果容器因正当原因无法启动,则重启策略将意味着应用程序代码永远不会执行。如果我们可以立即返回退出代码(如果非零)和随附的日志输出,那也是理想的。

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

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

# jaas -rm -image alexellis2/cows:latest

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

您的容器的退出代码也将可用,您可以通过echo $? 进行检查。

【讨论】:

猜你喜欢
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
相关资源
最近更新 更多