Docker消息:“忽略不支持的选项:restart”是否意味着忽略重启策略?

时间:2018-01-05 09:52:51

标签: docker docker-compose

使用docker stack deploy,我可以看到以下消息:

Ignoring unsupported options: restart
  • 这是否意味着没有重新启动策略?
  • 是否必须在撰写文件外指定?

您可以通过以下方式查看此消息 Joomla compose file available at the bottom of that page。 要启动撰写文件:

sudo docker swarm init
sudo docker stack deploy -c stackjoomla.yml joomla

2 个答案:

答案 0 :(得分:7)

对于生产多主机问题,docker-compose工具使用Compose YAML文件,用于本地(单主机)开发和测试场景,以及Swarm堆栈。

Compose文件中有许多设置仅适用于一个工具或另一个工具(docker-compose updocker stack deploy),因为某些设置特定于开发人员,而其他设置特定于生产群集。可以,他们在那里,并且当包含特定工具将忽略的设置时,您将在任一工具中看到警告。这通常适用于build:设置(仅限docker-compose)和deploy:设置(仅限Swarm堆栈)。

这里的整个目标是您可以在两个工具中使用的单个文件,并且在该场景中使用撰写文件的相关部分,而忽略其余部分。

所有这些都可以参考compose file documentation中的个别设置。如果您经常在Compose YAML工作,我建议您始终在此页面上打开一个标签,因为我几乎每天都会引用它多年,因为规格不断变化(我们在3.4+以上)现在)。

默认情况下,docker-compose不会重新启动容器,但如果您设置单一设置restart: as documented here,则可以。但是这种设置对于Swarm Stacks并不起作用。它会在docker stack deploy中显示为警告,提醒您该设置不会在Swarm堆栈中生效。

Swarm Stacks使用restart_policy:设置which gives finer control with multiple sub-settings下的deploy:。与所有Stack一样,默认值不必在撰写文件中指定,并且您将在该文档页面上看到其默认设置。

settings that won't work in a Swarm Stack的该页面上有一个列表,但它看起来不完整,因为restart:设置也应该存在。我会提交一份公关来解决这个问题。

此外,在Joomla示例中,您也指出了我们,README似乎也已过时,因为它在撰写示例中包含links:,这是depreciated as of Compose version 2,不再需要(因为现在,自定义虚拟网络上的所有容器都可以相互访问。

答案 1 :(得分:3)

如果您在独立模式下在Docker主机上docker-compose up应用程序,那么Compose所做的就是启动容器。一旦创建这些容器,它就不会监视它们的状态。 因此,如果容器死亡,您需要确保您的应用程序仍然有效。您可以通过设置 restart-policy 来执行此操作。

如果将应用程序部署到具有docker stack deploy的Docker群中,则情况会有所不同。 创建包含服务规范的堆栈。 然后,Docker swarm确保对于堆栈中的每个服务,始终运行指定数量的实例。如果容器出现故障,swarm将始终生成一个新实例,以便再次匹配服务规范。在这种情况下, restart-policy 没有任何意义,并且忽略了撰写文件中的相应设置。

如果要以群集模式停止应用程序的容器,则必须使用docker stack rm <stack-name>取消部署整个堆栈,或使用docker service scale <service-name>=0将服务扩展为零。